我在我的react本机应用程序中进行了以下测试,但是测试应该失败(因为返回的操作不等于我放在expectedActions
中的操作。我的猜测是它正在传递,因为{{ 1}}测试完成后运行测试。
如何强制测试等到承诺完成并且期望测试运行?还有另一种方法吗?
expect
答案 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);
});
})
});