首页 > 解决方案 > 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 中,我们没有观察到这种行为。

标签: jestjsrxjs6

解决方案


尝试使用done

it("should fail", (done) => {

    const obs = Observable.create((observer) => {
        observer.next(false);
    });

    obs.subscribe((value) => {
        console.log(value); // => false
        expect(value).toBeTruthy();
        done();
    });

});

更多信息


推荐阅读