我应该如何自动启动我的nodejs应用程序进行testing
我有一个nodejs宁静风格的服务没有前端,它只是接受数据,然后做一些事情。
我有unit testing了大部分方法级别的东西,但是现在我想基本上做一些自动化testing来certificate它们一起工作。 当我使用ASP.MVC和IIS时,服务器始终处于开启状态,所以我只是设置了这个场景(在数据库中插入虚拟GUFF),然后创build一个HttpRequest并将其发送到服务器,并断言我找回了我期望的。
然而,在nodejs中有一些挑战,因为应用程序需要通过命令行或其他机制运行,所以鉴于我有一个app.js将开始聆听,有没有什么办法可以自动启动运行我的testing,然后closures它,一旦我的testing完成?
我目前正在使用与摩卡Yadda我的testing,所以我可以保持它写在一个BDD风格的方式,但我希望Web应用程序的启动是不知道我使用的框架。
只要公开一些方法来启动和停止你的networking服务器。 你的app.js文件可能是这样的:
var app = express() var server = null var port = 3000 // configure your app here... exports.start = function(cb) { server = http.createServer(app).listen(port, function () { console.log('Express server listening on port ' + port) cb && cb() }) } exports.close = function(cb) { if (server) server.close(cb) } // when app.js is launched directly if (module.id === require.main.id) { exports.start() }
然后在你的testing中,你可以做这样的事情(基于摩卡的例子):
var app = require('../app') before(function(done) { app.start(done) }) after(function(done) { app.close(done) })
看看supertest https://github.com/visionmedia/supertest你可以写testing像
describe('GET /users', function(){ it('respond with json', function(done){ request(app) .get('/user') .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(200, done); }) })
- 使用mocha / chai来确保REST API提供一个文件?
- 如何使用Hapi.js实验室testing框架在控制台上进行debugging?
- unit testing连接数据库的asynchronousfunction
- 如何模拟多个用户
- JSunit testing:对文件更改运行testing(如nodemon)
- 使用AVA进行dynamictesting
- 在express项目中使用wallaby.js时避免使用EADDRINUSE
- 如何使用debugging器运行javascripttesting; 声明?
- 茉莉花是在量angular器超时,Selenium服务器之后崩溃(问题出现在Chrome浏览器,Firefox – 确定)