常见的使用 Enzyme 测试 Redux 的错误及其解决方案

阅读时长 6 分钟读完

前言

在前端开发中,测试是不可或缺的一环。而 Enzyme 是 React 测试工具中的佼佼者,它能够帮助开发者进行组件测试,而且它对 Redux 的支持也非常友好。

但是,即使是有经验的开发者,在使用 Enzyme 测试 Redux 时也会遇到一些常见的问题。本文将会介绍这些问题以及解决方案,帮助读者更好地使用 Enzyme 测试 Redux。

问题一:Redux store 没有正确初始化

在使用 Enzyme 测试 Redux 时,有时候会遇到 Redux store 没有正确初始化的问题。这是因为 Enzyme 的渲染方式与 React 不同,它不会像 React 一样自动初始化 Redux store。

解决方案:

在测试前手动初始化 Redux store。

示例代码:

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

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

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

  ----------- ------- ---------- -- -- -
    -----------------------------
  ---
---
展开代码

问题二:测试组件的 mapStateToProps 和 mapDispatchToProps 方法

在测试组件的 mapStateToProps 和 mapDispatchToProps 方法时,有时候会遇到一些问题。比如,mapStateToProps 方法返回的数据不正确,或者 mapDispatchToProps 方法没有正确绑定 action。

解决方案:

使用 Enzyme 提供的 dive 方法,深度查找组件内部的 connect 高阶组件,获取 mapStateToProps 和 mapDispatchToProps 方法返回的数据。

示例代码:

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

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

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

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

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

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

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

  ---------- --------- ----- ---- ----- --------- -------- -- -- -
    ----- ------ - ---------------------------
    -------------------------
    ----- ----- - ------------------------------
    ---------------------------
  ---
---
展开代码

问题三:测试异步 action

在测试异步 action 时,有时候会遇到一些问题。比如,异步 action 没有正确地触发或者没有正确地更新 Redux store。

解决方案:

使用 redux-mock-store 模拟 Redux store,然后在测试中触发异步 action。

示例代码:

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

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

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

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

    ------ ----------------------------------- -- -
      ----------------------------------------------------
    ---
  ---
---
展开代码

结语

在使用 Enzyme 测试 Redux 时,我们可能会遇到一些常见的问题,但是只要掌握了相应的解决方案,就能够更好地利用 Enzyme 进行测试。希望本文能够对读者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/678b21a7881faa801fa47d51

纠错
反馈

纠错反馈