我已经找到了一种方法来做到这一点,但我的直觉告诉我应该有一些更习惯性的做法。基本上,我不喜欢的是,我必须要求测试套件中的快速应用程序,这让我想知道是否存在竞赛状况。另外,我想知道如果我在几个这样的文件中运行几个测试套件会发生什么。测试快速应用程序API的正确方法?
任何人都知道更清洁的解决方案?
我简化应用程序如下:
app.js
app = module.exports = express()
...
http.createServer(app).listen(app.get('port'), function(){
console.log('app listening');
});
test.js
var request = require('superagent');
var assert = require('assert');
var app = require('../app');
var port = app.get('port');
var rootUrl = 'localhost:'+port;
describe('API tests', function(){
describe('/ (root url)', function(){
it('should return a 200 statuscode', function(done){
request.get(rootUrl).end(function(res){
assert.equal(200, res.status);
done();
});
});
...
我使用了一个名为supertest https://github.com/visionmedia/supertest的模块,它对此很有效。 – Brett
如果您在应用中对端口进行硬编码,那么如果您需要这种灵活性,则无需在测试中将其导入。您可以考虑使用某种配置框架(如易于使用['config'](https://npmjs.org/package/config)),您可以在应用程序和测试中使用它。 – robertklep
谢谢@Brett,我随你的建议去了,它对我的需求很好。 –