GraphQL 是一种用于 API 的查询语言,它可以大幅度减少前端和后端之间的通信次数,提高应用程序的性能。但是,如何创建可测试的 GraphQL API 却是一项挑战。在本文中,我们将探讨如何创建可测试的 GraphQL API,以及如何使用 Jest 进行测试。
什么是 GraphQL?
GraphQL 是一种 API 查询语言,它允许客户端指定需要的数据,并将其返回到一个单一的请求中。它比传统的 RESTful API 更加灵活,因为它允许客户端自定义查询,并只返回所需的数据。
如何创建 GraphQL API?
创建 GraphQL API 的第一步是定义模式。模式是一个描述数据类型和它们之间关系的集合。GraphQL 使用类型系统来描述数据,它是一个基于对象的类型系统,允许您定义自己的自定义类型。
这是一个示例模式:
-- -------------------- ---- ------- ---- ----- - ------ -------- -------- ----- ---- - ---- ---- - --- --- ----- ------- ------ ------- -
在上面的示例中,我们定义了一个查询类型和一个用户类型。查询类型有两个字段:users
和 user
。users
返回一个用户类型的数组,而 user
接受一个 id
参数并返回一个用户类型。
接下来,我们需要实现解析器函数。解析器函数是将查询映射到后端逻辑的函数。在 GraphQL 中,每个字段都有一个解析器函数,它负责返回该字段的值。
这是一个示例解析器:
-- -------------------- ---- ------- ----- --------- - - ------ - ------ -- -- - ------ ----------------------- -- ----- -------- ----- -- - ------ --------------------------------- -- -- --
在上面的示例中,我们实现了 users
和 user
的解析器函数。users
返回所有的用户,而 user
根据传入的 id
返回特定的用户。
最后,我们需要将模式和解析器函数组合起来并创建一个 GraphQL 服务器。这是一个示例服务器:
const { ApolloServer } = require('apollo-server'); const typeDefs = require('./schema'); const resolvers = require('./resolvers'); const server = new ApolloServer({ typeDefs, resolvers }); server.listen().then(({ url }) => { console.log(`Server ready at ${url}`); });
在上面的示例中,我们使用 ApolloServer 创建一个 GraphQL 服务器。我们将类型定义和解析器函数传递给 ApolloServer,它将它们组合起来并创建一个 GraphQL 服务器。
如何测试 GraphQL API?
测试 GraphQL API 的第一步是安装 Jest。Jest 是一个流行的 JavaScript 测试框架,它可以用于测试 GraphQL API。安装 Jest 可以使用以下命令:
npm install --save-dev jest
接下来,我们需要编写测试用例。测试用例应该包括查询和期望结果。这是一个示例测试用例:
-- -------------------- ---- ------- ----- - ---------------- - - --------------------------------- ----- - ------------- --- - - ------------------------- ----- -------- - --------------------- ----- --------- - ------------------------ ----- ------ - --- -------------- --------- --------- --- ----- - ----- - - ------------------------- --------- --- ------- ----- -- -- - ----- --------- - ---- ----- - ----- - -- ---- ----- - - -- ----- - ---- - - ----- ------- ------ --------- --- --------------------------------------------- --- --------- ---- -- ---- ----- -- -- - ----- -------------- - ---- ----- ---------------- ---- - -------- ---- - -- ---- ----- - - -- ----- - ---- - - ----- ------- ------ --------------- ---------- - --- --- -- --- ------------------------------- ---
在上面的示例中,我们编写了两个测试用例。第一个测试用例测试查询所有用户的查询,而第二个测试用例测试查询特定用户的查询。我们使用 createTestClient
函数创建一个测试客户端,并使用 query
函数发送查询。我们使用 gql
函数定义查询,并使用 variables
参数传递变量。
结论
在本文中,我们探讨了如何创建可测试的 GraphQL API,以及如何使用 Jest 进行测试。我们了解了如何定义模式和解析器函数,并创建了一个 GraphQL 服务器。我们还编写了测试用例,并使用 Jest 进行测试。通过使用这些技术,我们可以创建可测试的 GraphQL API,并确保它们的质量和可靠性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67798ed3381bbe667f943b9c