如何解决RxJS:从来没有检查?
我在修复返回NEVER
(new Observable<never>()
)的代码的单元测试时遇到问题。
我的问题是,我什至不知道该如何测试,因为NEVER
永远不会在subscribe
内运行任何功能。由于这是异步代码,因此我无法在该方法之外进行测试,因为它倾向于有时在afterAll
中运行,并且会破坏测试-随机崩溃。
通常对于使用Observables
的异步方法,我通常使用subscribe
方法中的函数。
例如。
myFunction.subscribe(
next => {
fail();
},error => {
expect(error).toBe(myError);
done();
},() => {
fail();
done();
});
这对于测试异步代码非常有效。
解决方法
好吧,因此根据我收到的所有评论(当然还有我自己的测试),似乎无法检查返回的Observable
是否为NEVER
。检查对象没什么特别的。
在NEVER
中确实存在一个称为rxjs
的常量,但在后面却创建了new Observable<never>(noop())
,因此无法进行比较。
最后,我提出了解决方案:
myFunction.pipe(
timeoutWith(3000,of('timed-out'))
)
.subscribe(
next => {
expect(next).toBe('timed-out');
},error => {
fail(error);
done();
},() => {
expect(someInjectedClass.someFunction).not.toHaveBeenCalled();
done();
}
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。