鉴于返回什么和实现可能抛出.subscribe()处理的Angular2 /打字稿法,比如这个:如何期待在Jasmine/Angular2/Typescript中异步抛出的异常?
onSubmit() { // returns nothing
this.service.someCall(this.someData).subscribe(
data => {
return Promise.reject('This is an asynchronously thrown error.');
},
err => {},
);
}
(就目前而言,我们假设有这样做的一个很好的理由.subscribe()处理程序到(可能有条件地)拒绝没有其他可测试的副作用,因此只会导致错误消息冒泡到应用程序的顶部)。
如何测试此方法导致一个被拒绝的承诺?
我发现一些人有同样的问题,但没有答案优雅:
How to deal with thrown errors in async code with Jasmine?
https://github.com/jasmine/jasmine/issues/529
https://gist.github.com/badsyntax/7769526
很难确切地知道如何在这里做出好的答案。这可能是一种情况,难以编写好的测试表明代码的重构是有序的。例如,为什么可观察的抛出承诺被拒绝,而不是抛出一个你会在'err => {}'中捕获的错误。在这种情况下'onSubmit'应该做什么。最后一个问题的答案是你应该测试的。谁在回复Promise,回调代码或可观察代码。为什么不在onSubmit的任何地方处理? –