apollo-server-testing
是一个基于 Jest 的 npm 包,可以用于测试 Apollo GraphQL 服务器。本文将介绍如何使用 apollo-server-testing
进行测试,并提供详细的示例代码和指导。
安装
在使用 apollo-server-testing
之前,需要确保已经安装了以下依赖:
- Apollo Server
- Express
- graphql
- jest
可以使用 npm 来安装这些依赖:
npm install apollo-server-express graphql jest apollo-server-testing --save-dev
基本用法
在 ApolloServer
的创建过程中,我们需要创建一个 TestClient
对象,用于发送请求并接收响应。以下是一个示例:
-- -------------------- ---- ------- ----- - ------------ - - --------------------------------- ----- - ---------------- - - --------------------------------- ----- - --------- --------- - - ------------------------- ----- ------ - --- -------------- --------- --------- --- ----- - ------ ------ - - -------------------------
接下来,我们可以使用 query
和 mutate
函数来发送请求并测试我们的 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