2017-05-03 7 views

答えて

1

手順1:テストするjsコードで、node-rest-clientインスタンスをエクスポートして、テストコードで使用できるようにします。

var Client = require('node-rest-client').Client; 
var restClient = new Client(); 
exports.restClient = restClient; //instance now available outside this module 

restClient.get(someUrl, ...); //actual node rest client call 

ステップ2:myApp.jsの例では、私はこれを入れてテストコードでは、偽の機能を返すラッパー関数を作成し、ターゲット・コードにそれを模擬するためにsinonを使用しています。これにより、テストセットアップ中に戻りデータと応答コードを注入することができます。

var nodeRestGet = function (data, statusCode) { 
    return function (url, cb) { 
    cb(data, { statusCode: statusCode || 200 }); 
    } 
}; 

sinon.stub(myApp.restClient, 'get').callsFake(nodeRestGet("", 200)); 

ステップ3:テストコードを書いてください。

myApp.doThings(); // TEST 

myApp.restClient.get.restore(); // removes the mock 
+0

ありがとう@JohnW、私は取得しています** cb **は関数エラーではありません、あなたは私を助けてくださいこれに。 – Praveen

+0

@Praveenあなたのコードを見ることなく、あなたがテストしているターゲットコードが問題のように聞こえます。上記の楕円をrestClient.get(someUrl、...)に配置する場合は、2番目のパラメータとしてコールバック関数を指定する必要があります。コードを共有すると、より明確な答えを得ることができます。 – JohnW

+0

以下の変更でうまく動作します。 'var nodeRestGet = function(data、statusCode){ return function(url、opts、next){ next(データ、{statusCode:statusCode || 200}); return { on:()=> { } }; }; }; ' – Praveen

関連する問題