jestjs - subscribe() 中的 expect() 失败不会将测试标记为无效
问题描述
我们最近升级到 Angular 6.0.3、RxJs 6.2.0 和 jest 23.1.0(从 RxJS 5 和 Angular 4 升级)。
Jest 和 RxJs 似乎存在问题,因为 subscribe-Block 内的期望语句失败不会将测试标记为失败。这是一个最小的例子:
it("should fail", () => {
const obs = Observable.create((observer) => {
observer.next(false);
});
obs.subscribe((value) => {
console.log(value); // => false
expect(value).toBeTruthy();
});
});
expect-Statement 被执行,但测试仍然通过。在以前的 RxJs 版本和 Jest 中,我们没有观察到这种行为。
解决方案
尝试使用done。
it("should fail", (done) => {
const obs = Observable.create((observer) => {
observer.next(false);
});
obs.subscribe((value) => {
console.log(value); // => false
expect(value).toBeTruthy();
done();
});
});
推荐阅读
- azure-devops - 用于自动化 Azure DevOps Pipelines 的 API?
- angular - Angular 6:无法以模式提交表单
- ruby-on-rails - Rails 5 如何解决 NoMethodError - 仅在 minitest 期间发生的 nil:NilClass 的未定义方法“名称”
- xpath - 在规范内从 .getAttribute 返回一个值
- java - 如何在一个 Java 控制器类中使用两个 TableView
- python - Python 全局类属性
- visual-studio-code - 有没有办法在 vs 代码资源管理器中展平或合并单个文件夹?
- oracle - ORACLE:如何使用输入和输出参数调用存储过程
- ios - 将 swift iOS 项目导入另一个项目
- java - LWJGL 找不到 org/lwjgl/openal/OpenALException