Глобальная переменная насмешка в шутку - PullRequest
0 голосов
/ 09 апреля 2020

Последние пару часов я боролся с ошибкой при шутливом тестировании. Глобальная переменная не позволит мне проверить мой компонент. Я пытался издеваться над переменной несколькими способами, но ничего не получалось. Я попытался добавить атрибут "globals" к моей конфигурации jest в пакете. json (не ork). Я попытался смоделировать переменную в моем тестовом файле (не сработало). Может кто-нибудь помочь мне здесь?

Это ошибка, которую я получаю

  ● Test suite failed to run

    TypeError: Cannot read property 'raven_dsn' of undefined

      20 |         }
      21 |     }
    > 22 |     setExtraContext(extraContex){
      23 |         if (global.context.raven_dsn) {
      24 |             Raven.setExtraContext(extraContex);
      25 |         }

      at new Logger (realistico/frontend/react/libraries/Logger.js:22:28)
      at Object.<anonymous> (realistico/frontend/react/libraries/Track.js:14:14)
      at Object.<anonymous> (realistico/realpano/react/components/Viewer.jsx:35:14)
      at Object.<anonymous> (realistico/newcms/react/components/StartView.js:19:15)
      at Object.<anonymous> (realistico/newcms/react/components/ViewManager.js:26:18)
      at Object.<anonymous> (realistico/newcms/react/components/HouseDetail.js:36:20)
      at Object.<anonymous> (__tests__/House.test.js:27:20)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        1.112s
Ran all test suites.

И вот так выглядят глобальные переменные, которые я мог бы посмеяться,

(global).gettext = jest.fn(); // ==> DOES WORK
(global).window.context = jest.fn(); // ==> DOES WORK
(global).onAddhouse = jest.fn(); // ==> DOES WORK
(global).context = jest.fn(() => {});  // ==> DOESN'T WORK

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Я не мог решить это «правильным» способом. Я просто добавил оператор if к этой указанной c функции, и он добился цели.

if (global.context && global.context.raven_dsn) {
     Raven.setExtraContext(extraContex);
}

0 голосов
/ 10 апреля 2020

Если глобальный context является объектом, вы должны попытаться инициализировать его в своих тестах как объект:

global.context = {};

Обратите внимание, что если вы хотите, чтобы свойство raven_dsn имело определенное значение Вы также должны будете определить это:

global.context = {
    raven_dsn: 'raven_dsn_value'
};
...