誓いを使ってBDDでnode.jsプロジェクトを開始しようとしています。次に、この奇妙なエラーが発生しました。
私は誓いを立てて急行のための小さなルートテストを書こうとしていました、そしてこれが私の元のコードです、
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) {
その後、このテストは機能しました!この奇妙な状況がどうして起こったのだろうかと思っています。誓いのドキュメントを読みましたが、cbに1つではなく2つのパラメーターを設定する必要があると言われている場所は見つかりませんでした。
手がかりをください!前もって感謝します!