Я пытался воссоздать среду, похожую на вашу, и я не смог воспроизвести эту ошибку:
/so
foo/
index.js
package.json
answer.test.js
package.json
Вот содержание ./package.json
: (Как выможно видеть, что он имеет foo
в качестве зависимости)
{
"name": "so",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"test": "jest"
},
"devDependencies": {
"jest": "^24.1.0"
},
"dependencies": {
"foo": "./foo"
}
}
Вот содержание ./foo/package.json
:
{
"name": "foo",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
А вот ./foo/index.js
: (Как видите, helper2
ссылается на глобальную переменную, которая не определена.)
module.exports = {
helper1: () => 42,
helper2: () => cc
};
Теперь тестовый файл:
const {helper1} = require('foo');
test('helper1 returns the answer', () => {
expect(helper1()).toBe(42);
});
Когда я запускаю тест (yarn test
), тест проходит без ошибок и предупреждений.Так что не похоже, что Jest беспокоит наличие метода, ссылающегося на глобальный объект, который находится вне области действия.
Возможно, вы могли бы использовать параметры конфигурации Jest:
globals
Набор глобальных переменных, которые должны быть доступны во всех средах тестирования.
setupFiles
Список путей к модулям, которые запускают некоторый код для настройки или настройки среды тестирования.Каждый файл настройки запускается один раз для каждого тестового файла.Поскольку каждый тест выполняется в своей собственной среде, эти сценарии будут выполняться в среде тестирования непосредственно перед выполнением самого кода теста.