2016-03-23 8 views
3

私はreduxコンテナで関数をテストしようとしていますが、問題はほとんど還元または反応していません。基本的には、私がテストしようとしているfetchData関数は、パラメータとして2つの関数をとり、それらを呼び出します。私は何を期待していたことは2つの匿名スタブを持っており、関数にこの方法を渡すことでしたSinonの匿名スタブがパラメータとして渡されました

var firstStub = sinon.stub().withArgs(mockResponse).returns('success'); 
var secondStub = sinon.stub().withArgs(mockResponse).returns('success'); 
AccountApp.fetchData({ firstStub , secondStub }); 

これはなFetchDataがfirstStubとsecondStubが機能されていない文句の私の機能を発生します。私はそれらがスタブオブジェクトであることを知っていますが、そうであれば、この状況を管理する正しい方法は何でしょうか。

+2

私は、引数 '{firstStub、secondStubを}'見て少し驚いて - あなたがオブジェクト '{firstStubを渡しているすなわち:firstStub、secondStub: secondStub} ' - 本当にやりたいですか? – Nicole

+0

ええ、私は少しでもそれに驚きました、正直なところ私は誰がそれをしたのか分かりません。それが問題の原因かもしれないと思いますか? – ralzaul

+0

これは今問題なく動作しているようですが、理由はわかりません。 – ralzaul

答えて

1

これはあなたが実際に(ES6の脱糖の後)この呼び出すことを意味するので、

AccountApp.fetchData({ firstStub , secondStub }); 

犯人であると思われるようスタブを渡す:

AccountApp.fetchData({ firstStub: firstStub, secondStub: secondStub }); 

を、これはつまり、あなたなFetchData()関数はこのような実装を持つ必要があります:

function(args) { 
    // .... 
    args.firstStub(params); 
    args.secondStub(params); 
    // ... 
}; 

私は深刻ですあなたのプロダクションコードがこれらのコールバックを「スタブ」と呼んでいるかどうかは間違いありません。だから、あなたは、おそらくこのような関数を呼び出したい:

AccountApp.fetchData(firstStub, secondStub); 
関連する問題