Unit testing 如何对使用Express+;猫鼬?
我有一个RESTAPI服务器,它使用Express、Mongoose和。我想对我的API进行单元测试。基本上,在端口x上启动一个临时web服务器,在端口y上启动一个空的mongo数据库,执行一些API调用(get和puts)并验证返回的内容,然后在测试完成后关闭临时服务器并删除测试数据库。最好的方法是什么?我一直在研究/但不确定如何设置临时服务器和数据库,也不确定最佳做法是什么。我建议尝试一下。您可以进行异步测试、模拟/存根并启动服务器。我找到了我想要的东西:。我不喜欢它基于.txt文件的语法-我适应了使用.json文件来代替我的规范。它也构建在上面,第一个似乎很容易使用,但第二个非常灵活和强大,我使用(持续集成服务器)和测试我的应用程序,我发现自己和你有同样的问题。我对Jenkins进行了配置,使其能够执行此shell命令:Unit testing 如何对使用Express+;猫鼬?,unit-testing,node.js,rest,mongoose,express,Unit Testing,Node.js,Rest,Mongoose,Express,我有一个RESTAPI服务器,它使用Express、Mongoose和。我想对我的API进行单元测试。基本上,在端口x上启动一个临时web服务器,在端口y上启动一个空的mongo数据库,执行一些API调用(get和puts)并验证返回的内容,然后在测试完成后关闭临时服务器并删除测试数据库。最好的方法是什么?我一直在研究/但不确定如何设置临时服务器和数据库,也不确定最佳做法是什么。我建议尝试一下。您可以进行异步测试、模拟/存根并启动服务器。我找到了我想要的东西:。我不喜欢它基于.txt文件的语法-
npm install
NODE_ENV=testing node app.js &
npm mocha
pkill node
这将运行服务器以执行测试,然后终止它。这还设置了NODE_ENV环境变量,以便在测试时可以在不同的端口上运行服务器,因为Jenkins已经使用端口8080
代码如下:
app.js:
...
var port = 8080
if(process.env.NODE_ENV === "testing")
port = 3000;
...
test.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();
});
});
});
});
没有正确的方法,但我确实为我的个人目录结构创建了一个种子应用程序,并包括@norman784建议的誓言测试
您可以克隆它:git clonehttps://github.com/hboylan/express-mongoose-api-seed.git
或者使用npm:
npm安装express mongoose api种子
看起来很有趣,但文档似乎不存在。。。您是否找到任何有用的示例来启动和运行?不确定如何使用api easy和/或vows使用备用配置设置启动临时节点服务器。您是如何尝试配置测试的?