Моя структура каталогов выглядит следующим образом:
src
|--> js
|--> more js files in nested folders
test
|--> spec
|--> js test files
Если в одном из моих тестов js в spec, если я попытаюсь вызвать функцию из js файла в моих вложенных каталогах src, я могу назвать функцию прекрасной. Однако, если я попытаюсь вызвать переменную, она не сможет найти ее, и я получаю ссылку.
Моя функция (которая видима) объявляется следующим образом:
function myFunctionName() {
... some code ...
}
Моя переменная объявляется после функции, а не внутри любой другой функции, например:
var myVar = '...';
Я также попытался объявить myVar как const
, для того же результата.
В myTestSpec.js
(function () {
'use strict';
describe('...', function() {
it('...', function () {
// Works
expect(myFunctionName()).toEqual('...');
// Doesn't work
var newVar = myVar;
});
});
})();
Закончилось решение этого, просто вставив какое-либо "глобальное" состояние, которое я требовал в функцию, которое нужно вернуть как json. Теперь мне просто нужно вызвать эту функцию каждый раз, когда я начинаю тест.
У меня небольшое повышение производительности, я думаю, поскольку нам нужно воссоздать состояние в нескольких тестах, однако это не производственный код (только тест), поэтому не должно быть проблемой, и это означает, что я не должен зависеть от другой библиотеки JS такие как require js..