我正在尝试使用 jest 来测试获取一些数据的异步 Action 创建器。我已经浏览了 redux-mock-store 文档,但实际上我并没有掌握我应该做什么。这是操作:
import { Dispatch } from 'redux';
export interface Task {
id: string;
title: string;
categoryTitle?: string;
error?: null;
}
export interface Category {
name: string,
tasks: Task[]
}
export const getCategories = () => {
return async (dispatch: Dispatch) => {
const response = await axios.get<Category[]>(url);
dispatch<GetCategoriesAction>({
type: ActionTypes.getCategories,
payload: response.data
});
};
};
如何测试?有人可以指导我完成这些步骤吗?
最佳答案
你不需要 redux-mock-store
这里。
本质上,您只需模拟 axios(有很多关于如何做到这一点的信息)并在您的测试调用中 getCategories()(dispatch)
使用 jest.fn()
的实例作为调度。
然后只需测试参数的频率和参数 dispatch
正在为不同的场景调用,例如“axios 成功”或“axios 失败”。
redux 的好处在于它解耦了事物。
之后,您可以通过使用一行操作和 expect
调用它们来测试您的 reducer 。他们返回什么。
redux 的好处在于它将这些层彼此分离,无需一次测试所有内容。
关于reactjs - 测试从本地 JSON 文件中获取一些数据的异步操作创建器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59440499/