2017-09-28 12 views
0

私が達成しようとしているのは、一定の価値。戻り値は、渡されたパラメータと新しい値のいずれかで構成されます。sinon内のスタブの引数を取得し、引数の1つ+特定のスタブ呼び出しの戻り値に他のデータを使用する方法

どのように私は、スタブの引数をつかむことができ、例えば

与えられたスタブ呼び出しの戻り値を形成するためにそれを使用します

mockDb.query.onCall(0).return(
    Tuple(this.args(0), "Some other data"); 
); 

私はこれを行うことができます知っている:

sinon.stub(obj, "hello", function (a) { 
    return a; 
}); 

しかし、これは全体のスタブではなく、個々のスタブ呼び出しで動作します。残念ながら、私は1つのオブジェクト(dbスタブ)を持っているので、別の呼び出しに異なるスタブを提供することはできません。

答えて

1

あなたが使用できるスタブ上の最初の呼び出しで、関数のパラメータへのアクセスを取得するには:これは、渡された引数を連結し、「データ」を返すようにスタブに最初の呼び出しを行います

sinon.stub(obj, "method").onCall(0).callsFake(function(arg) { 
    return "data" + arg; 
}); 

を。

ノードv7.10とsinon v4でテストしました。以下のテストスクリプト全体:

const sinon = require('sinon'); 
let obj = { 
    test: (arg1, arg2) => { 
     return arg1 + arg2; 
    } 
} 

let stub = sinon.stub(obj, "test"); 
stub.onCall(0).callsFake((arg1, arg2) => { 
    return "STB" + arg1 + arg2; 
}) 


console.log(stub("lol", "lol2")); // -> STBlollol2 
console.log(stub("lol", "lol3")); // -> undefined 
+0

これは動作していないようです。次のエラーが表示されます。 ".CallsFakeは関数ではありません"。仕様を読んで、それはcallsFakeがスタブ全体であり、個々の呼び出しごとではないようです。 –

+0

例を含めるために私の答えを拡張しました。たぶん私はあなたが何を意味するのか正しく理解していません。 – barnski

関連する問題