【问题标题】:Failing expect() inside subscribe() does not mark test as invalidsubscribe() 中的 expect() 失败不会将测试标记为无效
【发布时间】:2018-11-28 12:37:58
【问题描述】:

我们最近升级到了 Angular 6.0.3、RxJs 6.2.0 和 jest 23.1.0(从 RxJS 5 和 Angular 4 升级)。

Jest 和 RxJs 似乎存在问题,因为订阅块内的期望语句失败不会将测试标记为失败。这是一个最小的例子:

    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 中没有观察到这种行为。

【问题讨论】:

    标签: jestjs rxjs6


    【解决方案1】:

    尝试使用完成

    it("should fail", (done) => {
    
        const obs = Observable.create((observer) => {
            observer.next(false);
        });
    
        obs.subscribe((value) => {
            console.log(value); // => false
            expect(value).toBeTruthy();
            done();
        });
    
    });
    

    more info

    【讨论】:

    • 未处理的 Promise 拒绝:done 不是函数;区域: ;任务:Promise.then ;值:TypeError:done 不是函数
    • 注意:不要忘记将“done”函数作为参数传递给回调;这可以让你把头撞到墙上! :)
    猜你喜欢
    • 2018-12-20
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 2022-07-12
    相关资源
    最近更新 更多