0
我正在嘗試爲angular2中的身份驗證服務上的登錄方法編寫單元測試。我面臨的問題是Observable.subscribe是異步的,不會在我的測試中運行,因此localStorage.setItem
永遠不會運行。我試圖讓我的代碼返回一個承諾,並使用茉莉花完成,但這似乎也不工作。我應該如何去測試這個功能?如何測試Angular2 Observable中的功能?
從認證服務代碼
login(username: string, password: string) {
const url = environment.apiUrl;
this._http.post(`https://${url}/authenticate`, {username, password})
.map(res => res.json())
.subscribe(
data => localStorage.setItem('id_token', data.id_token),
error => console.log(error)
);
}
單元測試
it('should set id_token',() => {
mockBackend.connections.subscribe((connection: MockConnection) => {
connection.mockRespond(validResponse);
});
spyOn(localStorage, 'setItem').and.returnValue(undefined);
authService.login('admin', 'secret');
expect(localStorage.setItem).toHaveBeenCalledWith('i am a token!');
});