我有一个使用 Express、Mongoose 和config的 REST API 服务器。我想对我的 API 进行单元测试。基本上,在端口 x 上启动一个临时 Web 服务器,在端口 y 上启动一个空的 mongo-database,执行一些 API 调用(gets 和 puts)并验证我返回的内容,然后在我的测试完成后关闭临时服务器并删除测试数据库. 做这个的最好方式是什么?我一直在研究mocha / rewire但不确定如何设置临时服务器和数据库,也不确定最佳实践是什么。
问问题
5826 次
5 回答
6
我使用Jenkins(持续集成服务器)和Mocha来测试我的应用程序,我发现自己遇到了和你一样的问题。我配置了 Jenkins,所以它会执行这个 shell 命令:
npm install
NODE_ENV=testing node app.js &
npm mocha
pkill node
这将运行服务器以执行测试,然后将其杀死。这也设置了 NODE_ENV 环境变量,因此我可以在测试时在不同的端口上运行服务器,因为 Jenkins 已经使用端口 8080。
这是代码:
应用程序.js:
...
var port = 8080
if(process.env.NODE_ENV === "testing")
port = 3000;
...
测试.js:
var request = require('request'),
assert = require('assert');
describe('Blabla', function() {
describe('GET /', function() {
it("should respond with status 200", function(done) {
request('http://127.0.0.1:3000/', function(err,resp,body) {
assert.equal(resp.statusCode, 200);
done();
});
});
});
});
于 2012-11-12T02:26:11.113 回答
1
我找到了我正在寻找的东西:testrest。我不喜欢它基于 .txt 文件的语法——我适应了使用 .json 文件代替我的规范。
于 2012-09-10T08:51:52.097 回答
0
我建议尝试一下Buster.JS。您可以进行异步测试、模拟/存根并启动服务器。
于 2012-09-03T10:01:52.810 回答
0
没有正确的方法,但我确实为我的个人目录结构创建了一个种子应用程序,并包含@norman784 建议的誓言测试。
你可以克隆它:git clone https://github.com/hboylan/express-mongoose-api-seed.git
或者使用 npm:npm install express-mongoose-api-seed
于 2014-02-25T20:25:44.887 回答