title: graphql-tester (unit tests) with Graphql Apollo Server
body: <p>How to write unit tests for graphql. I am using apollo server, graphql-tester, and graphql.</p>
  
  <p>When i run the test it gives following error</p>
  
  <pre>
  
      { 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)
  
  </pre>
  
  <p>Following is the unit test.</p>
  
  <pre>
  
      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);
          });
  
        });
  
      });
  
  </pre>