2017-01-18 16 views
3

graphqlの単体テストの記述方法。私はapollo server、graphql-tester、およびgraphqlを使用しています。Graphql-Apollo Serverを使用したgraphql-tester(単体テスト)

私は、それはユニットテストで以下のエラー

 

    { 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); 
     }); 

     }); 

    }); 

+0

同じ設定ですが、同じエラーが発生します。あなたはこれを稼働させましたか? – jschr

+0

私は他の仕事に移りましたが、もう一度チェックする時間がありませんでした。あなたの以下の答えをチェックします。手伝ってくれてありがとう.. –

答えて

-1

GraphQL APIが実行されていますか?一般的には、テストスイートでテストサーバーを処理して、外部依存関係なしでテストを実行できるようにすることをお勧めします。私はgraphql-testerへの相対URLと共にラップされたエクスプレスサーバーを渡します。例えば

initApp()が実際に/ graphqlエンドポイントでGraphQLのAPIを実行するExpressアプリケーションを返さないと仮定すると、

const expressApp = initApp(); 
const client = tester({ 
    server: createExpressWrapper(expressApp), 
    url: '/graphql', 
}); 

は、私はそれがあなたのために働くべきだと考えています。

参考のため、ここにはcreateExpressWrapperの実装があります。

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

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

}) 

アポロのgraphqlサーバはコンテンツタイプが{ query: "...", variables: {}}のペイロードでapplication/jsonに設定されることを想定していますhttps://github.com/sazzer/graphql-tester/blob/master/src/main/servers/express.js

4

は、ここで私はそれが働いて得た方法です。

関連する問題