2015-10-22 7 views
6

私はノードを使用するプロジェクトに取り組んでおり、私たちはその機能を100%カバーしています。これはテストしていない唯一の関数であり、別の関数内にあります。ノードデータチャンク関数をテストする方法

var userInput = ""; 
    req.on("data", function(data){ 
     userInput += data; 
    }); 

この機能をテストするにはどうすればよいですか?別のファイルから関数をエクスポートしようとしましたが、運はありませんでした。

テープをテストモジュールとして使用していることに言及しておきます。

答えて

0

reqでこの「データ」イベントをトリガーする必要があります。このコールバックが呼び出されるようにします。

たとえば、あなたは、あなたのテストにreqがあるとしましょう、あなたは(これはモカです)そのような何かを行うことができます:

req.trigger('data', 'sampleData'); 
expect(userInput).to.equal('sampleData'); 
+0

私がテストするためにテープを使用していることに言及している必要があります。あなたはそれにかかわらず同様の方法で動作すると思いますか? –

+0

はい、それはそうだと思います。以下をテストしてください: '' 'req.emit( 'data'、 'sampleData'); console.log(userInput); '' 'それが 'sampleData'を出力するかどうかを確認します。そうでなければ@eljefedelrodeodeljefe –

0

req.emit('data', {sampleData: 'wrongOrRightSampleDataHere'})はそれを行う必要があります。 httpオブジェクトまたはreqオブジェクトをインスタンス化するときに、新しいインスタンスをインスタンス化することを確認してください。他のテストではこのイベントは受信されません。

より完全なものにするに...

var assert = require('assert') 
function test() { 
    var hasBeenCalledAtLeastOnce = false 
    var userInput = ""; 
    // req must be defined somewhere though 
    req.on("data", function(data){ 
     userInput += data; 

     if(hasBeenCalledAtLeastOnce) { 
      assert.equal(userInput, "HelloWorld", "userInput is in fact 'HelloWorld'") 
     } 
     hasBeenCalledAtLeastOnce = true 
    }); 

    req.emit('data', "Hello") 
    req.emit('data', "World") 

} 

test() 
関連する問題