npm 包 sinon-called-with-diff 使用教程

阅读时长 5 分钟读完

简介

sinon-called-with-diff 是一个基于 sinon 的 npm 包,用于比较函数被调用时传入的参数和期望的参数是否一致。使用这个包可以方便地进行单元测试中参数的校验。

安装

在项目中安装 sinon-called-with-diff 可以通过以下命令进行:

使用

下面是一个简单的例子,说明如何使用 sinon-called-with-diff 进行测试:

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

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

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

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

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

在这个例子中,我们定义了一个 add 函数,并使用 sinon.spy 创建了一个 spy 对象。接着,我们调用了 add 函数,并使用 assert 断言该函数被正确地调用。这里需要注意的是,在断言中使用了 calledWithExactlycalledWithDiff 两个函数。其中,calledWithExactly 用于判断函数被调用时传入的参数是否和期望的参数一致,而 calledWithDiff 则用于在断言失败时输出详细信息。

深度

sinon-called-with-diff 本质上是一个比较工具,它的实现原理是通过遍历传入的 spy 对象中保存的调用参数,和期望的参数进行比较。这个过程中需要注意两点:

  1. spy 对象只会记录最后一次调用的参数,因此如果需要比较多次调用的参数,需要在每次调用之前重置 spy 对象。
  2. 在比较对象(或数组)时,由于 JavaScript 中的对象比较是引用比较,因此需要使用深度比较来确保比较结果准确。

学习

除了使用 sinon-called-with-diff 进行单元测试外,还可以通过阅读源码来学习更多有关如何编写高质量测试用例的知识。下面是这个包的核心代码:

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

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

  ------ ---
-

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

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

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

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

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

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

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

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

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

这段代码非常简单,只有三个函数。其中,calledWithDiff 函数是最核心的比较函数,它接收一个 spy 对象和期望的参数,并在比较失败时返回一个详细的错误信息。而 deepEqual 函数则是用于深度比

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

纠错
反馈