为什么地址在我的应用程序中未定义?

我有一个简单的快速应用程序:

var express = require('express'); var path = require('path'); var app = express(); exports.app = app; var index = require('./routes/index'); app.use(express.static(path.join(__dirname,'client/dist/'))); app.get('/', index.get); function start(){ var port = process.env.PORT || 8080; app.listen(port, function(){ console.log('app is running on port: ' + port); }); }; exports.start = start; 

而一个整合testing:

 var request = require('supertest'); var app = require('../app'); describe('GET /', function(){ it('should repsond with 200', function(done){ request(app) .get('/') .expect(200, done.fail); }); }); 

该应用程序运行良好,但运行集成testing,我得到以下错误:

 Failures: 1) GET / should repsond with 200 1.1) TypeError: Object #<Object> has no method 'address' 

我做了一些search,似乎应用程序没有正确导出,但我似乎无法弄清楚为什么。

在集成testing中request(app.app)而不是request(app)应该修复错误。

 var request = require('supertest'); var app = require('../app'); describe('GET /', function(){ it('should repsond with 200', function(done){ request(app.app) .get('/') .expect(200, done.fail); }); });