【发布时间】:2018-02-05 20:33:20
【问题描述】:
我有一个正在调用 http 函数的服务:
processLogin(info) {
return this._call.post('login', info).subscribe(response => {
if (response.status === 'success') {
this._auth.login(response.object);
return true;
}
return false;
}, error => {
return false;
});
}
这是我正在尝试进行的测试:
describe('Facebook Login', () => {
let service: FacebookLoginService;
let call: CallService;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
FacebookLoginService,
{ provide: CallService, useClass: CallServiceMock },
]
});
service = TestBed.get(FacebookLoginService);
call = TestBed.get(CallService);
});
it('should process the login when the post method return success', () => {
spyOn(call, 'post').and.returnValue(Observable.of({status: 'success'}));
service.processLogin('any').subscribe(response => {
console.log(response);
});
});
});
但是,当我运行测试时,我不断收到错误消息
processLogin().subscribe( ... ) 不是函数
如果我将模拟的响应类型更改为 Observable.of 以外的任何内容,我会收到错误消息
call.post.subscribe( ... ) 不是函数
为什么不工作?我在另一个服务上进行了非常相似的测试,该服务也调用了call.post(),它正在工作。
【问题讨论】:
标签: angular unit-testing