使用 Mocha 测试 GraphQL Resolvers

GraphQL 是一种数据查询语言和运行时环境,它可以用来查询和操作您的 API 中的数据。在 GraphQL 中,Resolver 是定义数据如何被查询和修改的重要组件,它们将 GraphQL 请求和您的数据源连接起来。

在本文中,我们将使用 Mocha 来测试 GraphQL Resolvers。Mocha 是一个功能丰富的 JavaScript 测试框架,使我们能够编写高效的测试套件,并快速识别和排除错误。

准备工作

我们需要确保安装了以下软件包:

  • Node.js 和 npm:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,npm 是 Node.js 的包管理器。
  • GraphQL 和 Apollo Server:GraphQL 是一个查询语言和运行时,Apollo Server 是一个与 Express 或 Hapi 集成使用的 GraphQL 服务器。

这些包可以通过以下命令进行安装:

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

我们还将使用以下软件包:

  • Mocha:JavaScript 测试框架。
  • Chai:JavaScript 断言库。

这些包可以通过以下命令进行安装:

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

编写 Resolvers

首先,我们需要编写一些 Resolvers。我们将使用以下 Schema:

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

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

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

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

我们需要编写以下 Resolvers:

  • user:通过 ID 获取用户。
  • post:通过 ID 获取帖子。
  • createUser:创建用户。
  • createPost:创建帖子,并为其分配作者。

我们将在以下文件中编写 Resolvers:

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

在 Resolvers 文件中编写以下代码:

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

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

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

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

编写测试用例

现在我们可以编写测试用例来测试 Resolvers 了。我们将在以下文件中编写测试用例:

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

在测试文件中,我们将测试以下 Resolvers:

  • user:通过 ID 获取用户。
  • post:通过 ID 获取帖子。
  • createUser:创建用户。
  • createPost:创建帖子,并为其分配作者。

我们将使用 chai 断言库来断言测试结果是否正确。在测试文件中编写以下代码:

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

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

运行测试

现在我们可以运行测试了。在命令行中,进入项目的根目录,运行以下命令:

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

这将运行我们的测试套件并输出测试结果。如果所有测试通过,我们就可以放心地在生产环境中使用 Resolvers 了。

总结

本文介绍了使用 Mocha 测试 GraphQL Resolvers 的方法。我们先编写了 Resolvers,然后编写了测试用例,并使用 chai 断言库来断言测试结果是否正确。最后,我们运行测试套件来确保我们的 Resolvers 在生产环境中可以正常工作。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6642d1dbd3423812e40bc1dc