TypeError: Cannot read property 'address' of undefined supertest

Saitama picture Saitama · May 5, 2016 · Viewed 17.1k times · Source

I need some help to resolve my problem with testing on nodejs codes. I'm using mocha and supertest. I'm confused with the implementation in supertest. I don't know to resolved it. I'm trying to automate downloading a file.

describe('GET /entry/:entryId/file/:id/download', function(){
    it('should pass download function', function(done){
        this.timeout(15000);
        request(app.webServer)
            .get('/entry/543CGsdadtrE/file/wDRDasdDASAS/download')
            .set('Authorization', 'Bearer eyJ0eXAiOiJKV1QiLCJhbGco')
            .expect(200)
            .end(function(err, res) {
                if (err) return done(err);
                console.log(err, res);
                done();
            });
    });
});

Answer

Colin D picture Colin D · Aug 2, 2016

I received a similar error from mocha when testing an express app. Full text of error:

0 passing (185ms)
2 failing

1) loading express responds to /:
 TypeError: app.address is not a function
  at Test.serverAddress (test.js:55:18)
  at new Test (test.js:36:12)
  at Object.obj.(anonymous function) [as get] (index.js:25:14)
  at Context.testSlash (test.js:12:14)

2) loading express 404 everything else:
 TypeError: app.address is not a function
  at Test.serverAddress (test.js:55:18)
  at new Test (test.js:36:12)
  at Object.obj.(anonymous function) [as get] (index.js:25:14)
  at Context.testPath (test.js:17:14)

I fixed it by adding this to my express server.js, i.e. export the server object

module.exports = app