npm 包 apollo-server-testing 使用教程

阅读时长 6 分钟读完

apollo-server-testing 是一个基于 Jest 的 npm 包,可以用于测试 Apollo GraphQL 服务器。本文将介绍如何使用 apollo-server-testing 进行测试,并提供详细的示例代码和指导。

安装

在使用 apollo-server-testing 之前,需要确保已经安装了以下依赖:

  • Apollo Server
  • Express
  • graphql
  • jest

可以使用 npm 来安装这些依赖:

基本用法

ApolloServer 的创建过程中,我们需要创建一个 TestClient 对象,用于发送请求并接收响应。以下是一个示例:

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

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

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

接下来,我们可以使用 querymutate 函数来发送请求并测试我们的 resolver。

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

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

在上述代码中,我们使用 query 函数来发送一个查询请求,然后判断返回的结果是否符合预期。

类似地,我们也可以使用 mutate 函数来测试变更请求。

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

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

高级用法

在复杂的测试场景中,我们可能需要进行更多的设置和操作。以下是一些高级用法示例。

改变上下文

有时候我们需要改变请求的上下文,例如添加用户身份验证等。在 apollo-server-testing 中,我们可以在发送请求的同时设置上下文:

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

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

在上述代码中,我们设置了一个包含用户身份验证的上下文,并使用 context 参数来将其传递给 query 函数。

模拟错误

有时候我们需要模拟服务器返回的错误,以确保客户端能够正确地处理它们。在 apollo-server-testing 中,我们可以使用 MockedResponse 类来模拟错误:

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

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

在上述代码中,我们使用 MockedResponse 类来返回一个包含错误的响应。我们还使用 errors 参数将该响应传递给 query 函数。

使用自定义 Mock function

apollo-server-testing 支持使用 Jest 的 doMock 方法来替换任意 npm 包。以下是一个例子:

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

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

在上述代码中,我们使用 doMock 方法来替换 my-cool-dependency npm 包。我们可以在之后的测试中使用自己定义的 Mock function 来代替真实的 npm 包。这为我们提供了更多测试的灵活性。

结语

apollo-server-testing 是一个非常实用的 npm 包,可以帮助我们快速而准确地测试 Apollo GraphQL 服务器。希望本文能够帮助读者更好地了解和学习 apollo-server-testing 的使用。

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