node.js - GraphQL Node JS 应用程序的单元测试

标签 node.js graphql graphql-js

我开发了一个带有自定义解析器的 graphql Node js 应用程序。谁能向我指出一些文档,其中说明了如何正确为我的服务编写单元测试?或者,如果有人以前做过并且可以为我指明正确的方向,那就太好了!

最佳答案

为了测试服务的每个端点,您需要使用适当的负载对指定的 URL 执行 POST 操作。有效负载应该是一个包含三个属性的对象

  • 查询 - 这是将在服务器端运行的 GraphQL 查询
  • operationName - 要运行的查询操作的名称
  • 变量 - 在查询中使用

为了测试您的端点,您可以使用类似 supertest 的模块允许您执行 GETPOSTPUT 等请求。

import request from 'supertest';

let postData = {
    query: `query returnUser($id: Int!){
                returnUser(id: $id){
                    id
                    username
                    email
                }
            }`,
    operationName 'returnUser',
    variables: {
        id: 1
    }
};

request(graphQLEndpoint)
    .post('?')
    .send(postData)
    .expect(200) // status code that you expect to be returned
    .end(function(error, response){
        if ( error ) console.log(error);

        // validate your response
    });

通过这种方式,您可以通过使用具有适当属性的等效 postData 对象执行 POST 请求来测试您的服务包含的每个查询变异。要将所有这些测试包装在一起,您可以使用在 Node.js 下工作的任何测试框架,例如 Mocha使用断言库。

关于node.js - GraphQL Node JS 应用程序的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542917/

相关文章:

c# - 在 asp.net core 3.1 中使用最新的 GraphQL 库时,无法解析 IDependencyResolver 和 ResolveFieldContext

java - GraphQL-SPQR 中返回错误的正确方法

graphql - 如何使用 schema.graphql 文件作为 typeDefs?

node.js heroku Ghost 由于缺少依赖项而无法启动 : Cannot find module

javascript - 如何在 Node xmpp花名册中添加联系人?

python - 如何使用 Python AWS AppSync 客户端?

reactjs - 通过 GRAPHQL 订阅传递数据仅在其中一个参数上给出 null

sequelize.js - 用graphql-sequelize解析 "IS A"关系

node.js - npm 嵌套依赖管理

javascript - 如何选择 CSS Puppeteer/Node.js 中定义的图像名称?