npm 包 mockingoose--temp-fix 使用教程

阅读时长 6 分钟读完

前言

在前端开发过程中,mock 数据是必不可少的一项工作。在 Node.js 中,我们可以使用 npm 上的 mockery 包,但是这个包在使用与维护过程中均有一些不足。众所周知, mokingoose 是一个相当优秀的模拟库。但是,有些测试用例的警告无法适应 Mongoose 的最新版本,这就导致了一个问题:我们需要在测试用例中使用 mockingoose,但是 mockingoose 无法与最新的 Mongoose 版本一起使用。

在这篇文章中,我们将介绍如何使用 npm 包 mockingoose--temp-fix 来解决这个问题。

什么是 mockingoose--temp-fix

mockingoose--temp-fixmockingoose 的一个分支,它可以与 Mongoose 的最新版本一起使用。

安装

首先,我们需要使用 npm 安装 mockingoose--temp-fix 包和 mongoose。在命令行窗口中输入以下命令:

使用 mockingoose--temp-fix

在我们开始使用 mockingoose--temp-fix 之前,我们需要理解 mockingoose 如何在 Mongoose 中工作。

当我们使用 Mongoose 进行查询时,它会返回一个具有 Chainable 属性的对象。这些属性可以让我们执行更多操作(如 where、skip、limit 等)。当我们尝试调用它时,如果它不具有 Chainable 属性或者在调用中出错,那么这个查询将会失败。

为了使用 mockingoose--temp-fix,我们需要将每个 Mongoose 模块导入到模拟的模块中。这意味着对于每个模型,我们需要导出一个用于拦截查询的 Mock。这个 Mock 可以接收任何参数并返回一个具有 Chainable 属性的对象。下面是一个示例:

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

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

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

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

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

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

有了这个导出,我们可以在测试中使用 mockingoose--temp-fix 将其 mock 化。下面是示例:

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

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

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

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

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

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

在上面的示例中,我们通过将 User 模型传递给 mockingoose--temp-fixtoReturn 方法来制作模拟对象。此方法期望返回特定方法('save')的结果,并将 userToCreate 对象作为值返回。

但是,我们需要注意到 mockingoose--temp-fix 并不是完美的。它在实现上是有所不足的,无法将某些操作与 Mongoose 一起使用。在使用 mockingoose--temp-fix 时,有一些操作我们需要自己实现。下面是一个示例:

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

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

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

在上面的代码中,我们使用 Mongoose 的 API 完全实现了 find 操作。

最后,你应该避免在整个代码库中混合使用 mockingoose--temp-fixmockery。如果你必须在一个单独的文件中使用 mockery,请确保文件的依赖项中没有与 mockingoose--temp-fix 冲突的包。

结论

在上文中,我们了解了 mockingoose--temp-fix 正确使用的方法。通过使用这个包,我们能够更优雅的完成前端开发过程中的 mock 数据工作。当然,它也有一些局限性,需要在使用中多加注意和实践。

希望这篇文章对你有所帮助。

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

纠错
反馈