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
看不到我在做什麼錯。有任何想法嗎?
如果這是一個運行時錯誤,您可以檢查您的ide或瀏覽器中的'authService'實例以查看是否存在'logIn'方法。 – Igor
還沒有讓我的腦袋適當地調試這些測試。然而,如果我將一個構造函數添加到'AuthServiceStub'並寫入到該構造函數的控制檯中,例如'console.log('CREATED')',它從不向控制檯輸出'CREATED' - 所以不知道我的存根服務是否曾經得到創造.... –