Это для Angular4, использующего Жасмин для тестирования.
У меня есть свойство, которое вызывается в компоненте из метода получения в службе.В разных случаях (отраженных в разных тестах) служба должна либо возвращать строковое значение, либо нулевое значение.Мне нужно проверить часть кода в компоненте, который проверяет значение этого свойства на ноль и перемещается в другое место, в зависимости от значения свойства.Вот код компонента:
this.authService.educatorPinToken
? this.router.navigate(['components/student/data-entry-summary'])
: this.router.navigate(['components/student/student-dash']);
Я установил фиктивную службу и добавил шпион для этого свойства.Я могу установить значение свойства в beforeEach, но не могу найти способ установить разные значения в каждом из моих двух тестов.Я пытался это, но безрезультатно:
В beforeEach:
const authServiceMock = { get studentAgentId() { return null; }, deleteEducatorToken: null, get educatorPinToken() { return null; } };
let educatorPinTokenSpy: jasmine.Spy;
beforeEach(() => {
spyOnProperty(authServiceMock, 'studentAgentId').and.returnValue('1');
educatorPinTokenSpy = spyOnProperty(authServiceMock, 'educatorPinToken').and.returnValue(null);
spyOn(authServiceMock, 'deleteEducatorToken');
});
И этот код в самом тесте:
educatorPinTokenSpy.and.returnValue('WXYZ');
fixture.detectChanges();
Но это не сбрасываетзначение - это все еще возвращает ноль компоненту.Как я могу это сделать?