角度单元测试-未报告带有承诺的失败测试

时间:2020-01-03 13:23:26

标签: angular unit-testing promise karma-jasmine

我正在测试一种返回承诺的服务方法。 当调度动作A, B, C时,诺言就解决了。派发AFail, BFail, CFail之一时,它被拒绝。

当测试通过时,它可以很好地完成并报告结果。但是,如果测试错误,则永远不会报告失败的测试,并且浏览器会无限期挂起。

这是测试代码:

// Here ommited TestBed declaration etc. 

describe('initializeApp', () => {
    let initializePromise: Promise<any>;
    let promiseResolved: boolean;
    beforeEach(() => {
      initializePromise = appInitializerService.initializeApp();
      promiseResolved = undefined;
      initializePromise.then(() => promiseResolved = true).catch(() => promiseResolved = false);
    });

    it('should reject when A, BFail, C are dispatched (1 fail)',
      fakeAsync(() => {
        store.dispatch(new A());
        store.dispatch(new BFail());
        store.dispatch(new C());
        flushMicrotasks();

        console.log(promiseResolved); // log false as the promise is rejected

        expect(promiseResolved).toEqual(true); // test fails and the result is never reported
        // expect(promiseResolved).toEqual(false); // test passes and all is working
      }));
});

我尝试用tick而不是flushMicrotasks玩,直接打电话给fail,但无济于事。

为什么测试没有报告失败?

0 个答案:

没有答案