npm 包 @types/redux-mock-store 使用教程

在前端开发中,使用 Redux 作为状态管理工具是非常常见的。但是在测试 Redux 状态时,我们需要一个 mock store 去替代真实的 store,以便隔离测试,保证业务逻辑的独立性。而 npm 包 @types/redux-mock-store 就是一个能够生成 mock store 的库。在本文中,我将会介绍如何使用 @types/redux-mock-store 进行测试。

安装

通过 npm 进行安装:

--- ------- ---------- -----------------------

使用

@types/redux-mock-store 提供了一个函数 configureStore,用于生成一个 store 的模拟器。以下是一个使用示例:

------ - ------------ ---------------- --------------- - ---- --------
------ ----- ---- --------------
------ -------------- ---- -------------------

----- ----------- - --------
----- --------- - ----------------------------

----- ------------ - - ------ - --

-------- ------------- - ------------- ------- -
  ------ ------------- -
    ---- ------------
      ------ - --------- ------ ----------- - - --
    ---- ------------
      ------ - --------- ------ ----------- - - --
    --------
      ------ ------
  -
-

--------------------- -- -- -
  ---------- ------ --------- -------- -- -- -
    ----- ----- - ------------------------
    ---------------- ----- ----------- ---
    ----- ------- - -------------------
    ----- --------------- - - ----- ----------- --
    -------------------------------------------
  ---
---

首先,使用 configureStore 函数生成一个 mock store,并给定了 middleware 数组和 initialState。接着,这个 mock store 就可以像普通的 store 一样进行 dispatch 操作。在上述例子中,我们执行了一个 INCREMENT 操作,然后使用 store.getActions() 得到了 mock store 所接收到的 action。最后,我们使用 Jest 提供的断言函数 toEqual() 比较了 action 的实际值和预期值是否相等。如果不相等就会抛出 AssertionError。

配合 Jest 进行测试

@types/redux-mock-store 库是专门为 Jest 所设计的,使用 Jest 的mock方式深度测试 Redux 的业务逻辑是最佳实践。

在 Jest 中,可以通过 jest.fn() 函数生成一个 mock 函数,这个 mock 函数可以接收方法或组件的调用,并根据调用参数返回预定义结果。具体示例:

------ - ----------- - ---- --------
------ - -------- - ---- --------------
------ - ------- --------- - ---- -------------------------
------ -------------- ---- -------------------

------ ------- ---- ------------

----- --------- - -------------------

------------------- -- -- -
  ---------- -------- -- -- -
    ----- ----- - ----------- -------- - ---
    ----- - --------- - - -------
      --------- --------------
        -------- --
      -----------
    --
    ------------------------- -------------------------------
  ---

  ---------- --------- ---- --------- -- -- -
    ----- ----- - ----------- -------- - ---
    ----- - --------- - - -------
      --------- --------------
        -------- --
      -----------
    --
    -----------------------------------------
    ----- ------- - -------------------
    -------------------------- ----- ----------- ----
  ---
---

在上述示例中,我们使用了一个 Counter 组件作为被测试的对象。这个组件通过 Redux 管理一个 counter 状态,并以此来改变组件的视图。我们首先生成了一个 mock store,使用这个 store 来代替真正的 store。接着,我们使用 render() 函数渲染了这个 Counter 组件,并使用了 getByText() 函数得到了“Current count: 0”这个文本节点。最后,我们使用了 Jest 的断言函数 toBeInTheDocument() 来验证其是否存在。

在第二个测试用例中,我们模拟了点击按钮“Increment”的操作,并使用 store.getActions() 得到了 mocked store 实际接收到的 action 对象。最后使用了 toEqual() 函数验证了 action 对象的实际值和预期值是否相等。

总结

@types/redux-mock-store 是一个非常好用的库,利用它我们可以方便地测试 Redux 的业务逻辑。本文主要介绍了其安装和使用,并给出了相关示例代码。希望大家可以在实际开发中掌握这个库的使用,让业务更加健壮。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedaaf6b5cbfe1ea06105ff


猜你喜欢

  • npm 包 @styled-icons/zondicons 使用教程

    简介 @styled-icons/zondicons 是一个提供了一套开源图标的 npm 包。它采用了一种工程化的方式,使开发者可以非常方便地在自己的项目中使用这些图标。

    4 年前
  • npm 包 @icedesign/skin 使用教程

    介绍 @icedesign/skin 是一款专门为阿里云前端出品的 React UI 组件库。它提供了一套美观、灵活和高效的组件来帮助开发者快速构建 React 应用。

    4 年前
  • npm 包 ice-skin-loader 使用教程

    简介 ice-skin-loader 是一个 webpack loader,用于将 .css 中的样式转换成 ICE 组件库 中的皮肤变量。皮肤变量是一组由 ICE 组件库提供的预定义变量,它们表示 ...

    4 年前
  • npm 包 extract-css-assets-webpack-plugin 使用教程

    在前端开发中,经常会使用 webpack 打包工具来进行代码的处理和打包。而在 webpack 打包中,我们经常需要将样式文件分离到单独的 css 文件中,这就需要用到一个用于提取 css 文件的 w...

    4 年前
  • npm 包 resolve-sass-import 使用教程

    在前端开发中,Sass 是一种比较流行的 CSS 预处理器,其可以帮助我们更加优雅的编写 CSS,通过定义变量、混合器等动态语言特性,为我们的开发带来很多方便。但是,在 Sass 的使用过程中,有时候...

    4 年前
  • ice-npm-utils 使用教程

    简介 npm 包 ice-npm-utils 是一个基于 Vue 开发的前端工具库,它提供了一些常用的工具函数和组件来帮助我们更高效地开发。 安装 你可以通过 npm 安装 ice-npm-utils...

    4 年前
  • npm 包 mkcert 使用教程

    前言 在前端开发过程中,我们经常需要在本地测试 SSL 环境。但如果我们需要快速创建一个可信的 SSL 环境,就需要使用到当前比较火热的 npm 包 mkcert。

    4 年前
  • npm 包 @alifd/adaptor-helper 使用教程

    @alifd/adaptor-helper 是一个由阿里前端团队开发的 npm 包,它可以帮助前端开发者快速封装适配器函数,方便进行数据格式转换和处理,是一款非常实用的工具。

    4 年前
  • npm 包 @aligov/util 使用教程

    前言 在前端开发中,我们经常需要使用一些通用的方法和工具函数。为了避免重复造轮子,提高开发效率,我们可以使用已经封装好的 npm 包。本文将介绍一个常用的 npm 包 @aligov/util 的使用...

    4 年前
  • npm 包 typescript-snapshots-plugin 使用教程

    typescript-snapshots-plugin 是一个 npm 包,它为 TypeScript 提供了一个插件,可以生成 TypeScript 代码的快照。

    4 年前
  • npm 包 webpack-dev-mock 使用教程

    在前端开发中,我们常常使用 webpack 进行模块打包。webpack-dev-server 是 webpack 官方提供的一个开发服务器,它可以在本地快速启动一个服务器用于开发环境的调试。

    4 年前
  • npm包ice-plugin-modular-import使用教程

    前言 在前端开发中,我们经常需要使用到各种第三方库来满足项目的需求。而要使用这些库,就需要通过 npm 包管理工具来引用安装。npm 是一个包管理工具,可以方便地引入、管理、发布各种 JavaScri...

    4 年前
  • npm 包 n-readlines 使用教程

    在前端开发中,经常需要处理文件的读取和写入。而在 Node.js 中,操作文件的一种方法是使用文件系统模块(fs)。但是在某些情况下,我们可能需要快速地读取一个大文件,或者按行读取一个文件。

    4 年前
  • npm 包 mockirer 使用教程

    在前端开发中,我们经常需要测试我们的代码。于是,我们用到显式的 Mock 数据来测试我们的方法。mockirer 是一个可以轻松创建假数据的 npm 包,非常适合用来测试前端应用程序。

    4 年前
  • NPM包@types/recharts-scale使用教程

    简介 在开发Web应用程序时,图表是展现数据的常用方式之一。而Recharts是一个优秀的基于React框架的可重用图表组件,它能够轻松地生成多种类型的静态和动态数据可视化图表,帮助用户轻松地实现复杂...

    4 年前
  • npm 包 redux-persist-node-storage 使用教程

    在现代的 web 开发中,前端框架和库已经成为一个这个行业中最受欢迎的技术栈。其中,React.js 是一个被广泛应用的前端库之一。React.js 不仅提供了开箱即用的富交互 UI 组件,也带来了更...

    4 年前
  • npm 包 @redux-offline/redux-offline 使用教程

    前言 随着互联网的快速发展,前端技术也越来越成熟。在前端开发中,状态管理是一个很重要的方面,而 Redux 是一个用于 JavaScript 应用程序的可预测状态容器,能够帮助我们更好地管理和调试应用...

    4 年前
  • npm 包 apollo-link-retry 使用教程

    介绍 apollo-link-retry 是一个用于 Apollo Client 的链接,可用于添加请求重试功能。当您在使用 GraphQL 时,遇到一些需要等待或连接较慢或图表遗漏或只是网络故障的原...

    4 年前
  • npm 包 aws-appsync-auth-link 使用教程

    在前端开发中,我们常常需要与 AWS AppSync 进行交互。而为了在正确的权限下与 AWS AppSync 进行交互,我们需要使用 AWS AppSync Authorization Link。

    4 年前
  • npm 包 @aws-sdk/client-firehose 使用教程

    前言 在开发云计算和大数据相关的应用程序时,你可能会需要将数据传输到 AWS 的服务上。AWS Firehose 是 AWS 提供的一个数据传输服务,它可以将数据流式传输到多种目标,如 S3 存储桶、...

    4 年前

相关推荐

    暂无文章