gpt4 book ai didi

带有 Graphql Apollo Server 的 graphql-tester(单元测试)

转载 作者:行者123 更新时间:2023-12-01 23:29:38 26 4
gpt4 key购买 nike

如何为 graphql 编写单元测试。我正在使用 apollo 服务器、graphql-tester 和 graphql。

当我运行测试时出现以下错误

    { raw: '{"errors":[{"message":"Cannot read property \'definitions\' of undefined"}]}',      data: undefined,      errors: [ { message: 'Cannot read property \'definitions\' of undefined' } ],      headers:        { 'x-powered-by': 'Express',         'content-type': 'application/json',         date: 'Wed, 18 Jan 2017 05:56:22 GMT',         connection: 'close',         'transfer-encoding': 'chunked' },      status: 400,      success: false }          1) Returns success      0 passing (35ms)      1 failing      1) Unittest1 Returns success:         TypeError: Cannot read property 'success' of undefined          at Assertion. (node_modules/chai/lib/chai/core/assertions.js:890:14)          at Assertion.ctx.(anonymous function) (node_modules/chai/lib/chai/utils/addMethod.js:41:25)          at Assertion.somethingMethod (node_modules/chai-things/lib/chai-things.js:97:25)          at Assertion.ctx.(anonymous function) (node_modules/chai/lib/chai/utils/overwriteMethod.js:49:33)          at Assertion.allMethod (node_modules/chai-things/lib/chai-things.js:165:25)          at Assertion.ctx.(anonymous function) (node_modules/chai/lib/chai/utils/overwriteMethod.js:49:33)          at node_modules/chai-as-promised/lib/chai-as-promised.js:305:22          at process._tickCallback (internal/process/next_tick.js:103:7)

下面是单元测试。

    const tester = require('graphql-tester').tester;    const fromGlobalId = require('graphql-relay').fromGlobalId;    const chai = require('chai');    chai.should();    chai.use(require('chai-things'));    chai.use(require('chai-properties'));    chai.use(require('chai-arrays'));    chai.use(require('chai-as-promised'));    describe('Sites', () => {      let sitesTest = tester({        url: 'http://localhost:3000/graphql'      });      describe('Unittest1', () => {        const response = sitesTest('{viewer {id}}').then((data) => {          console.log(data)        });        it('Returns success', () => {          return response.should.eventually.have.property('success').equal(true);        });      });    });

最佳答案

这是我如何让它工作的:

const gql = tester({
server: createExpressWrapper(server),
url: '/graphql',
authorization: `Bearer ${token}`,
contentType: 'application/json'
})

gql(JSON.stringify({ query: '{ users { id } }' })).then((data) => {

})

Apollo 的 graphql 服务器期望将内容类型设置为 application/json,有效负载为 { query: "...", variables: {}}

关于带有 Graphql Apollo Server 的 graphql-tester(单元测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41712608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com