Жасмин издевается не используется в setImmediate - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь выполнить модульное тестирование функции, логика ядра которой c выполняется в setImmediate, например:

код:

public async myFunc() {
    setImmediate(async () => {
        // core logic
        someModule.foo();
    });
}

модульный тест:

const mock1: jasmine.Spy = spyOn(...);
const mock2: jasmine.Spy = spyOn(someModule, 'foo');

myFunc().then(() => {
    expect(someModule.foo).toHaveBeenCalledTimes(3);
});

Мой тест не пройден с someModule.foo was called 0 times. Когда я отлаживал тест, причина его неудачи в том, что макет не используется реальным кодом. Весь тест не пройден, потому что вместо использования mock2 в тесте используются фактические производственные логи c. Однако, если я удалю setImmediate, тест будет работать нормально.

Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...