Вы можете настроить шпиона, который будет высмеивать вызов функции и возвращать любое значение, которое вы хотите для check()
.Это также позволяет вам проверить, была ли эта функция действительно запущена (например, шпион и сколько раз и т. Д.).
Сложность в том, что если у вас нет экземпляра класса, вам нужнонастройте вашего шпиона на prototype
вашего класса.
Посмотрите на этот код (dummyVariable
это просто переменная для проверки, был ли выполнен код после check()
или нет):
it('doStuff should do something, assuming helper.check() is true', () => {
// test the before value
expect(component.dummyVariable).toBe(false);
// set up the spy and make it return true
const spy = spyOn(MyHelperClass.prototype, 'check').and.returnValue(true);
// call our function
component.doStuff();
// check the after value
expect(component.dummyVariable).toBe(true);
// check if our spy/mocked function was actually called
expect(spy).toHaveBeenCalledTimes(1);
});
// same thing as above but this time our spy returns false
it('doStuff should do something, assuming helper.check() is false', () => {
expect(component.dummyVariable).toBe(false);
const spy = spyOn(MyHelperClass.prototype, 'check').and.returnValue(false);
component.doStuff();
expect(component.dummyVariable).toBe(false);
expect(spy).toHaveBeenCalledTimes(1);
});
Рабочий пример можно найти здесь .