reactjs - 测试从本地 JSON 文件中获取一些数据的异步操作创建器

标签 reactjs typescript testing redux jestjs

我正在尝试使用 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/

相关文章:

multithreading - Appium并行执行+ TestNG框架问题

javascript - react 切换列表竞争条件?

javascript - React 中的 i18n 与 .properties 文件

javascript - 无法在React中使用package.json "exports"导入模块

javascript - 无法绑定(bind)到 '',因为它不是 '' angular 2 的已知属性

testing - 如何在 xpages 中进行负载测试

javascript - componentDidMount 中的函数没有未使用的表达式

javascript - 添加到数组中

javascript - ionic 导入模块

ruby-on-rails - 使用 Rspec 测试和模拟服务