如何在测试结束前强制执行Jest单元测试断言?

时间:2018-06-19 03:51:52

标签: javascript reactjs unit-testing redux jestjs

我在我的react本机应用程序中进行了以下测试,但是测试应该失败(因为返回的操作不等于我放在expectedActions中的操作。我的猜测是它正在传递,因为{{ 1}}测试完成后运行测试。

如何强制测试等到承诺完成并且期望测试运行?还有另一种方法吗?

expect

2 个答案:

答案 0 :(得分:1)

好吧,看起来我只是错过了一些Jest文档 - 如果你回复了承诺,即return auth.authorize.mockImplementation(() => Promise.resolve...那么Jest会等到它完成后再继续。

答案 1 :(得分:0)

是用于测试异步代码的varios方法。查看文档以获取示例:https://facebook.github.io/jest/docs/en/asynchronous.html

有人可能会回复承诺:

describe('authorize actions', () => {
beforeEach(() => {
    store = mockStore({});
});

it('should create an action to signify successful auth', () => {
    auth.authorize.mockImplementation(() => Promise.resolve({"something": "value"}));
    const expectedActions = [{"type":"AUTHORIZE_RESPONSE","payload":{"something":"sdklfjsdf"}}];

    return authorizeUser(store.dispatch, store.state).then(() => {
        expect(store.getActions()).toEqual(expectedActions);
    });

})

});