我已經找到了一種方法來做到這一點,但我的直覺告訴我應該有一些更習慣性的做法。基本上,我不喜歡的是,我必須要求測試套件中的快速應用程序,這讓我想知道是否存在競賽狀況。另外,我想知道如果我在幾個這樣的文件中運行幾個測試套件會發生什麼。測試快速應用程序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,我隨你的建議去了,它對我的需求很好。 –