я определил интерфейс и непрозрачного маркер следующегоAngular2 жасмин SpyOn метод не существует
export let AUTH_SERVICE = new OpaqueToken('auth.service');
export interface AuthService {
logIn(): void;
logOut(): void;
}
В моем тестовом классе я обеспечиваю погасила версию AuthService
, т.е.
@Injectable()
class AuthServiceStub implements AuthService {
logIn(): void {}
logOut(): void {}
}
и установить до моего теста beforeEach
следующего
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LoginComponent ],
providers: [
{provide: AUTH_SERVICE, useValue: AuthServiceStub}
]
});
}));
Я тогда начал написать тест, то есть,
it('should call log in on AuthService',() => {
let authService = fixture.debugElement.injector.get(AUTH_SERVICE);
spyOn(authService, 'logIn');
// expect will go here
});
, но я получаю следующее сообщение об ошибке
Error: <spyOn> : logIn() method does not exist
Не можете увидеть, что я делаю неправильно. Есть идеи?
Если это ошибка времени выполнения, вы можете проверить экземпляр 'authService' в своем ide или браузере, чтобы узнать, существует ли метод' logIn'. – Igor
У меня не было головы, отлаживая эти тесты соответствующим образом. Однако, если я добавлю конструктор в 'AuthServiceStub' и напишу в консоль в этом конструкторе, например,' console.log ('CREATED') ', он никогда не печатает' CREATED' для консоли - так что не уверен, что мой обрезанный сервис когда-либо получение создано .... –