正如标题所述,我正在尝试测试另一个异步操作。
我有一个登录操作,该操作成功调度了login_success
(只是将加载切换为false),将令牌保存在localStorage
中,还调用了get_current_user
,这引起了另一个网络请求来获取用户根据ID。
test('login dispatches login, login success and get current user if everything is okay', () => {
let expectedActions = [
SIGN_IN,
SIGN_IN_SUCCESS,
GET_CURRENT_USER,
GET_CURRENT_USER_SUCCESS
]
window.fetch = jest.fn().mockImplementationOnce(() =>
Promise.resolve({ status: 200, ok: true, json: () => Promise.resolve({ user: { user: { _id: "123" }, token: "faketoken", message: "Logged in" } }) }))
return store.dispatch(signIn({ username: "fakeone", password: "anotherfake" })).then(() => {
const actualActions = store.getActions().map(actions => actions.type)
expect(actualActions).toEqual(expectedActions)
})
})
当前,由于未调度get_current_user_success
,因此返回失败的测试,没有模拟的提取请求。我不知道在哪里模拟该请求,该请求在第一个请求之后尝试过,然后在那儿阻塞,但这是行不通的。