GraphQL 是一种用于 API 的查询语言,它提供了一种更加高效、强大和灵活的方式来获取数据。GraphQL 的核心是类型系统,它定义了可用的类型和它们之间的关系。在编写 GraphQL 代码时,我们需要对不同的类型进行测试,以确保它们的行为符合预期。本文将介绍对不同 GraphQL 类型进行测试的最佳实践,包括标量、对象、接口和联合类型。
标量类型
标量类型是 GraphQL 中最简单的类型,它们表示基本的数据类型,如整数、浮点数、字符串和布尔值。在测试标量类型时,我们需要确保它们的值符合预期。以下是一个测试字符串类型的示例代码:
---- ----- - ------ ------ -
----- - ------- - - ------------------- ----- ------ - -------------------- ----------- ------- ----- -- -- - ----- ----- - - ----- - ----- - -- ----- ------ - ----- --------------- ------- ---------------------------------------- ---
在上面的示例中,我们使用了 Jest 和 graphql-js 库来测试 GraphQL 查询。我们编写了一个查询,它将返回一个字符串类型的值。然后,我们使用 graphql 函数将查询和模式传递给 GraphQL 引擎,并检查返回的值是否为 'world'。
对象类型
对象类型是 GraphQL 中最常见的类型,它们表示复杂的数据结构,由多个字段组成。在测试对象类型时,我们需要确保每个字段都返回预期的值。以下是一个测试对象类型的示例代码:
---- ----- - -------- ----- ---- - ---- ---- - --- --- ----- ------- ------ ------- -
----- - ------- - - ------------------- ----- ------ - -------------------- ----------- ------ ----- -- -- - ----- ----- - - ----- - -------- ---- - -- ---- ----- - - -- ----- ------ - ----- --------------- ------- ---------------------------------- --- ---- ----- ----- ----- ------ ---------------------- --- ---
在上面的示例中,我们编写了一个查询,它将返回一个 User 类型的值。我们使用 graphql 函数将查询和模式传递给 GraphQL 引擎,并检查返回的值是否与预期值匹配。
接口类型
接口类型是 GraphQL 中定义共享字段的一种方式。它们允许我们定义一个接口,然后让多个类型实现它。在测试接口类型时,我们需要确保每个实现都返回预期的值。以下是一个测试接口类型的示例代码:
--------- ---- - --- --- - ---- ----- - -------- ----- ---- - ---- ---- ---------- ---- - --- --- ----- ------- ------ ------- - ---- ---- ---------- ---- - --- --- ------ ------- -------- ------- -
----- - ------- - - ------------------- ----- ------ - -------------------- ----------- ---- ------ ----- -- -- - ----- ----- - - ----- - -------- ---- - -- --- -- ---- - ---- ----- - - - -- ----- ------ - ----- --------------- ------- ---------------------------------- --- ---- ----- ----- ----- ------ ---------------------- --- --- ----------- ---- ------ ----- -- -- - ----- ----- - - ----- - -------- ---- - -- --- -- ---- - ----- ------- - - - -- ----- ------ - ----- --------------- ------- ---------------------------------- --- ---- ------ -------- -- --------- -------- ------ ----- ----- --- ------ --- ---
在上面的示例中,我们定义了一个 Node 接口和两个实现:User 和 Post。我们编写了两个查询,分别测试 User 和 Post 实现的字段。我们使用 graphql 函数将查询和模式传递给 GraphQL 引擎,并检查返回的值是否与预期值匹配。
联合类型
联合类型是 GraphQL 中定义多个类型的一种方式。它们允许我们定义一个联合类型,然后让多个类型成为它的成员。在测试联合类型时,我们需要确保每个成员都返回预期的值。以下是一个测试联合类型的示例代码:
----- ------------ - ---- - ---- ---- ----- - ------------- --------- ---------------- - ---- ---- - --- --- ----- ------- ------ ------- - ---- ---- - --- --- ------ ------- -------- ------- -
----- - ------- - - ------------------- ----- ------ - -------------------- ----------- ------ ------- ----- -- -- - ----- ----- - - ----- - ------------- ------- - --- -- ---- - ---- ----- - - - -- ----- ------ - ----- --------------- ------- ------------------------------------ - ----- ----- ----- ------ ---------------------- -- - ----- ----- ----- ------ ---------------------- -- --- --- ----------- ------ ------- ----- -- -- - ----- ----- - - ----- - ------------- ---------- - --- -- ---- - ----- ------- - - - -- ----- ------ - ----- --------------- ------- ------------------------------------ - ------ -------- -- --------- -------- ------ ----- ----- --- ------ -- --- ---
在上面的示例中,我们定义了一个 SearchResult 联合类型和两个成员:User 和 Post。我们编写了两个查询,分别测试 User 和 Post 成员的字段。我们使用 graphql 函数将查询和模式传递给 GraphQL 引擎,并检查返回的值是否与预期值匹配。
总结
在编写 GraphQL 代码时,对不同类型进行测试是非常重要的。本文介绍了对标量、对象、接口和联合类型进行测试的最佳实践,并提供了示例代码。我们希望这些实践能够帮助您编写更健壮的 GraphQL 代码,并确保它们的行为符合预期。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6607c129d10417a22265b448