Тест немедленно вызвать функцию - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу создать набор тестов для файла javascript, который содержит немедленно вызванную функцию. Eg.:

(function(context) {
    context.setVariable("a") = context.getVariable("a") + 1
})(context);

Я не могу изменить файл для проверки.

Моя текущая попытка использует jest и следующее:

context = null

test('test1', () => {
    context = new context_mock();
    context.setVariable("a", "1");
    require("./My-Javascript");
    // Check result
    helper.check(context.getVariable("a"), 2);
});

test('test2', () => {
    context = new context_mock();
    context.setVariable("a", "2");
    require("./My-Javascript");
    // Check result
    helper.check(context.getVariable("a"), 3);
});

В этом случае тест 2 всегда заканчивается неудачей. Я предполагаю, что это потому, что файл javascript не может быть require d дважды.

Редактировать: Да context - это глобальная переменная, которая используется, когда сценарий require d. Я знаю, что это уродливое решение, но я не могу изменить исходный файл.

Любые предложения приветствуются.

1 Ответ

0 голосов
/ 17 сентября 2018

jest имеет дополнительный уровень кэширования модулей, который не позволяет запускать require несколько раз.

Добавление следующего для очистки кэша модулей перед вызовами позволяет запускать скрипт несколько раз:

beforeEach(() => {
    jest.resetModules()
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...