Есть ли простой способ проверить, был ли вызван метод, когда переменная не определена? - PullRequest
0 голосов
/ 04 марта 2020

Итак, у меня есть простой метод, который выполняет что-то, только если определена переданная переменная:

public myFunction(item) {
    if (typeof item !== 'undefined') {
        item.doSomething();
    }
}

Вот мой тест в jasmine:

    describe('myFunction()', () => {
    it ('should only do something if the item passed is defined.', () => {
        const item = new Item();
        spyOn(item, 'doSomething');
        service.myFunction(item);

        //this works   
        expect(item.doSomething).toHaveBeenCalledTimes(1);
    });

    it ('should not do something if the item passed is undefined.', () => {
        const item = undefined;
        spyOn(item, 'doSomething');
        service.myFunction(item);

        //this does not work.. 
        expect(item.doSomething).toHaveBeenCalledTimes(0);
    });
   });

Мой первый тест работает нормально. Но я не знаю, как express мой второй тест. Как я могу сказать, что doSomething никогда не вызывался, когда передаваемый элемент не определен? Это кажется довольно тривиальным, но у меня проблемы с этим. У меня такое чувство, что это невозможно, потому что я не могу шпионить за чем-то, что undefined. Опять же, может быть, есть обходной путь?

1 Ответ

0 голосов
/ 04 марта 2020

Попробуйте:

it ('should not do something if the item passed is undefined.', () => {
        const item = undefined;
        const conditionForIf = typeof item !== 'undefined';
        // check the conditionForIf, if it is false, it won't go on and `doSomething`
        expect(conditionForIf).toBe(false);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...