【发布时间】:2012-11-16 03:00:49
【问题描述】:
我正在尝试使用 vows 使用 BDD 启动我的 node.js 项目。 然后我得到了这个奇怪的错误。
我正在尝试用 vows 为 express 编写一个小型路由测试,这是我的原始代码,
node_server.prototype.mainpage = function(callback) {
http.get({host:'localhost', port:this.port, path:'/', agent:false}, function(res){
callback(res.statusCode);
});
}
这就是我写誓言测试的方式
vows.describe('Request to the server').addBatch({
'Should get http 200': {
topic: function () {
app_server.mainpage(this.callback)
},
'we get 200': function (statusCode) {
app_server.close_server();
assert.equal(statusCode, 200);
}
},
}).run(); // Run it
即使 statusCode 是正确的,Vows 总是会报告意外错误,像这样
» An unexpected error was caught: 200
所以我像这样改变我的主页功能
node_server.prototype.mainpage = function(callback) {
http.get({host:'localhost', port:this.port, path:'/', agent:false}, function(res){
callback("error", res.statusCode); // Here I added a err message in front of the status code.
});
}
我还将我的测试套件更改为
'we get 200': function (err, statusCode) {
然后这个测试成功了! 我只是想知道这种奇怪的情况怎么会发生。我已经阅读了誓言的文档,但我没有找到他们说我必须将 2 个参数放入 cb 而不是 1 的任何地方。
给我一些线索! 提前谢谢!
【问题讨论】:
标签: node.js testing express bdd vows