Bhu*_*kar 14 javascript jasmine angular2-testing angular
我正在为我的angular2组件创建单元测试用例.
到目前为止测试用例正确运行.
但我面临着有关异步调用的问题.
对于前者 我有以下创建新用户的方法,如果用户已经存在则会抛出错误:
onSubmit():Observable<any> {
this._userService.saveUser(this.user).subscribe(
(response) => {
this._directoryService.getDirectoryById(this.selectedDirectory._id).subscribe(
(directory) => {
this.users = directory[0].users;
},
(error) => {
return error;
}
);
},
(error) => {
return error;
}
);
return ;
}
Run Code Online (Sandbox Code Playgroud)
在我的服务中,我使用以下内容抛出错误:
if (alreadyExist) {
let error = "user already exist in database";
return Observable.throw(error);
}
Run Code Online (Sandbox Code Playgroud)
现在我期待这个方法抛出一个错误:
expect( function(){ app.onSubmit(); } )
.toThrow(new Error("User already exist in database"));
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这个测试用例应该是成功的,但是在我的测试用例失败后我得到了以下错误:
抛出异常的预期函数.
我尝试了多个expect块:
expect(app.onSubmit()).toThrowError(new Error("User already exist in database"));
Run Code Online (Sandbox Code Playgroud)
但仍然没有取得任何成功.
任何输入?
谢谢
Pau*_*tha 18
关键Observable.throw
是它实际上没有抛出任何错误.即使它确实如此,它也会在内部处理.expect().toThrowError
只能捕获无法处理的异常,并且会冒泡到测试中.
什么Observable.throw
做反而是通过错误的onError
回调.所以你应该做的是订阅调用,并检查回调中的错误
it('..', async(() => {
app.onSubmit().subscribe(
() => {
fail('expected error');
},
(error) => {
expect(error).toBe('user already exist in database');
});
}))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8286 次 |
最近记录: |