2012-01-03 11 views
0

私はnode.jsを初めて使用し、ポート5000で実行される小さなWebアプリケーションを作成することから始めました。カールを介して)、すべて正常に動作し、私は応答を返す。 i「はBDD使用しての誓い」をしながら、HTTPクライアントとそれを接続しようとしたときには、テストが壊れ、結果のメッセージは、ここでは、応答が定義されていないhttpクライアントを使用して接続した場合のNode.jsレスポンス

✗ 

    /GET 
    ✗ should respond with 404 
    ***TypeError: Cannot read property 'status' of undefined*** 
    at ClientRequest.<anonymous> (/home/sunil/work/nodal_programs/subscription-engine-processor/sample-test.js:13:23) 
    at runTest (/home/sunil/work/nodal_programs/subscription-engine-processor/node_modules/vows/lib/vows.js:132:26) 
    at EventEmitter.<anonymous> (/home/sunil/work/nodal_programs/subscription-engine-processor/node_modules/vows/lib/vows.js:85:17) 
    at EventEmitter.<anonymous> (events.js:67:17) 
    at EventEmitter.emit (/home/sunil/work/nodal_programs/subscription-engine-processor/node_modules/vows/lib/vows.js:236:24) 
    at /home/sunil/work/nodal_programs/subscription-engine-processor/node_modules/vows/lib/vows/context.js:31:52 
    at ClientRequest.<anonymous> (/home/sunil/work/nodal_programs/subscription-engine-processor/node_modules/vows/lib/vows/context.js:46:29) 
    at ClientRequest.<anonymous> (events.js:67:17) 
    at ClientRequest.emit (/home/sunil/work/nodal_programs/subscription-engine-processor/node_modules/vows/lib/vows.js:236:24) 
    at HTTPParser.onIncoming (http.js:1225:11) 
✗ Errored » 1 errored (0.012s) 

ました。

body = "Not found"; 
response.writeHead(404, {'Content-Type': 'text/plain', 'Content-Length': body.length});  
response.end(body); 

これは、アプリケーション内での応答方法です。私は、ヘッダーのcontent-typeとcontent-lengthを設定しました。 問題の原因を教えてもらえますか?

私が書いた誓いはこれです。

var http = require('http'), 
    vows = require('vows'), 
    assert = require('assert'); 

vows.describe("notification").addBatch({ 
    "/GET": { 
    topic: function() { 
    http.get({host: 'localhost', port: 1337, path: '/', method: 'GET'}, this.callback) ; 
    }, 
    'should respond with 404': function(e,res) { 
     assert.equal(res.status, 404); 
    } 
    } 
}).run(); 
+2

テストコードを投稿できますか? – nicolaskruchten

答えて

1

Node.js HTTP docsによると

'should respond with 404': function(res) { 
    assert.equal(res.status, 404); 
} 

'should respond with 404': function(e,res) { 
    assert.equal(res.status, 404); 
} 

を変更してみてください、http.request(したがってhttp.get)コールバックはerr引数を取ることはありません。

2

私はコードを変更し、レスポンスをコールバックの最初のパラメータとして試し、エラーを2番目のパラメータとして試しました。これは私のために働いた。

'should respond with 404': function(res,e) { 
    assert.equal(res.status, 404); 
} 

しかし、上記のように、唯一のパラメータとしてのresは、依然としてエラーを発生させます。
ありがとうございます。

関連する問題