npm 包 mock-apollo-client 使用教程

阅读时长 7 分钟读完

介绍

在前端开发中,使用 GraphQL 作为数据查询语言已经成为越来越普遍的做法。由于各种原因,我们可能并不想在本地开发的时候直接请求到服务器,这时候我们需要使用 mock 来模拟服务器的数据。mock 的实现方式有很多,比如手写 mock,使用第三方库等等。

本文将介绍一个 npm 包 mock-apollo-client,它可以提供一个假的 Apollo Client,同时具有本地数据和对 schema 的支持,可以帮助我们更加方便地进行前端开发。

安装

使用 npm 安装 mock-apollo-client

使用

在具体使用 mock-apollo-client 前,我们需要确保你已经了解了 Apollo Client 和在前端中如何使用。

首先,需要导入 mock-apollo-client 并创建实例。

创建 mock client 实例后,你可以使用 mockClient.setRequestHandler 来处理网络请求。这个函数接受两个参数:一个 GraphQL 查询或 mutation 请求和 mock 数据。

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

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

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

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

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

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

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

以上代码的实现方法是模拟 GraphQL 查询和 _mergeDeep,该函数是大多数查询的默认合并函数。

在处理网络请求的同时,我们也可以使用 mockClient.restore() 函数来清除之前的 mock 数据,这在测试过程中非常有用。

示例代码

我们来看一个完整的例子,该例子包含 GraphQL 查询,mutation 和 Subscription。同时结合了 mock-apollo-client 和 graphql-tag 来使用。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

Mock Apollo Client 是一个非常有用的工具,尤其在本地开发阶段通过模拟 GraphQL API 有助于前端开发。同时需要注意的是:mock-apollo-client 也有一些局限性,但是它对于一般的查询、mutation、subscription 都支持得很好,并可以很好的模拟网络请求。本文希望能够帮助到大家,为前端开发提供一种高效的解决方案。

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

纠错
反馈