Jest测试Redux Toolkit的createAsyncThunk时thunkAPI.getState不是函数
问题原因与解决方法
报错原因
createAsyncThunk生成的是thunk action创建函数,调用后返回的thunk必须交由store.dispatch执行,由Redux内置的thunk中间件自动注入参数、组装合法的thunkAPI对象才能正常运行。- 你测试代码中手动执行thunk、自行传入三个参数的写法不符合
createAsyncThunk的内部执行逻辑,导致thunkAPI结构异常,getState方法不存在。
解决方案
直接修改测试用例,将getUsers()返回的thunk交给store.dispatch执行,awaitdispatch返回的Promise即可拿到执行结果:
describe('userSlice', () => { test('getUsers success', async () => { const result = await store.dispatch(getUsers()); console.log(result) expect(result.type).toBe('user/getUsers/fulfilled'); expect(result.meta.requestStatus).toBe('fulfilled'); }); });
内容的提问来源于stack exchange,提问作者UK4
相关产品推荐
相关产品推荐

