Глобальная переменная в Jest Unit Test

Я новичок в Jest и пытаюсь написать несколько модульных тестов для моего существующего приложения React. У меня есть глобальная переменная window.CONFIG, в которой хранятся некоторые конфигурации, которые используются в разных местах приложения. Эта переменная инициализируется в теге скрипта целевой HTML-страницы.

Теперь я пытаюсь написать тест вспомогательной функции, которая зависит от этого window.CONFIG и всегда не определена при обращении к

Вот код:

config.js

export default window.CONFIG;

приложение / helper.js

import config from "../config";

export default  {
  getCompanyURL(company) {
    return config.baseUrl + "/companies/" + company.id;
  },
}

_ тесты _ / helpers-test.js

jest.dontMock('../app/helpers.js');

var helper = require('../app/helpers.js').default;

describe('Get company URL', function() {

 it('returns company url with company id appended', function() {
   expect(companies.getCompanyURL({id:     1})).toBe('test_base_url/companies/1');
 });
});

config для Get Company Url всегда не определено. Поскольку целевая страница браузера не загружена, window.CONFIG не инициализируется. Как я могу имитировать этот config модуль в модульном тесте в Jest?

Заранее спасибо!!


person Yashika Garg    schedule 17.02.2016    source источник


Ответы (2)


Я не уверен, поможет ли это вам или нет, но вы можете поместить глобальные переменные прямо в свой package.json

"jest":{
  "globals": {
    "config": {"foo":"bar"}
  }
}
person Falantar    schedule 30.01.2017
comment
По умолчанию приложение Create React поддерживает только переопределение следующих параметров Jest: • collectCoverageFrom • extensionReporters • охватаThreshold • покрытияPathIgnorePatterns • extraGlobals • globalSetup • globalTeardown • moduleNameMapper • resetMocks • resetModules • snapshotSerializers • transform • transformIgnorePatterns • watchPatterns • watch. Эти параметры в вашей конфигурации package.json Jest в настоящее время не поддерживаются приложением Create React:, Это то, что я получаю, когда обновляю package.json, любые идеи по этому поводу или мне нужно извлечь модуль - person Learner; 17.01.2020

Я решил это, создав вручную макет config.js в каталоге __mocks__ следующим образом:

let configMock = jest.genMockFromModule('../config');
let __mockConfig = {};

__mockConfig.baseUrl = "test_base_url/";

configMock = __mockConfig;

export default configMock;
person Yashika Garg    schedule 29.02.2016
comment
как получить к нему доступ window.config, поэтому в любом тестовом случае, если вы поместите console.log (window.config.baseUrl) = ›, вы получите test_base_url / - person Learner; 17.01.2020