【问题标题】:Unit Tests for GraphQL Node JS AppGraphQL Node JS 应用程序的单元测试
【发布时间】:2017-07-21 10:34:45
【问题描述】:

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

【问题讨论】:

    标签: node.js graphql graphql-js


    【解决方案1】:

    为了测试您的服务的每个端点,您需要使用适当的有效负载对指定的 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 请求来测试您的服务包含的每个querymutation。要将所有这些测试打包在一起,您可以使用任何在 Node.js 下运行的测试框架,例如 Mocha,并使用断言库。

    【讨论】:

      【解决方案2】:

      我们在寻找测试 GraphQL SailsJS 应用程序的正确方法时遇到了同样的问题。 chaimochasupertest 的组合似乎是最好的解决方案。在this article 中有一个关于如何配置所有内容的完整示例和一个完整的测试示例,因此请查看它以更好地了解如何操作。此外,mochachaisupertest 上的文档也很有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-03
        • 2019-08-29
        • 1970-01-01
        • 2018-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-22
        相关资源
        最近更新 更多