2016-11-28 8 views
0

私はいくつかのコードのテストに取り組んでいますが、私はsinonにいくつか問題があります。私の関数の1つがパラメータとして関数を受け取り、それを模倣する方法を見つけられていないということです。関数の引数をテストする

var get = sinon.stub($, 'get') 

その後$に.getを使用した後:

sinon.assert.calledWith(get, expectedObject); 

次のように私のコードは次のとおりです。

function getUsers(usersPromise) { 
    const config = { date: new Date() }; 
    return usersPromise(config) 
     .then(function (data) { 
      // Do stuff 
     }) 
} 

私はしたいもの

通常は、このような何かをユーザーを模擬することができるようにすることです。だから私はそれが正しい設定オブジェクト(私は値のたくさんを省略して)と呼ばれていることを確認し、さらに.then関数のいくつかのものをアサートします。

sinon.stub(usersPromise)は機能しません。私は少し失われています。

答えて

0

あり、あなたに完全なソリューションを提供するために十分な情報がないのですが、あなたは最初に続いてgetのスタブを作成.then

var stubThen = sinon.stub(); 

のスタブを作成したいと返されたオブジェクトのプロパティとしてstubThenを持っているように思えます。

にあなたのテストコードパス stubGetで次に
var stubGet = sinon.stub(); 
stubGet.returns({then: stubThen}); 

し、それに応じて確認してください。

0

私がしたいことは、ユーザーを模擬することができるようにすることです。

TDDを遵守した結果の1つは、分離されたテスト可能なブロックにコードを作成する必要があるということです。これは、関数の個々の行またはそれに渡された引数のテストを実行できないという直接的な結果です。あなたのケースでは、溶液は、あなたのコードをこのように構成してある。

var usersPromise = function(){}; 
function getUsers(usersPromise) {}; 

今、あなたはあなたがへの呼び出しの前にそれをスタブなど、テストすることができますusersPromise孤立ブロックを作ってきました。

+0

私はすでにそのようにしています。問題は、私はgetUsers内にいくつかのものをアサートする必要があることです(つまり、オプションオブジェクトに何が入っているか)、引数をスタブして何が呼び出されているかを確認するのが最善だと考えました。 – kjonsson

+0

@kjonsson:あなたは 'getUsers'内でアサートする必要があるものは何ですか?あなたの質問に含めてください。 – rabbitco