2016-10-31 3 views
0

ユニットテストでjQuery連鎖関数が呼び出されたことを確認する方法。たとえば、次のコードの場合ユニットテストでjQuery連鎖関数が呼び出されたことを確認するにはどうすればいいですか

function myFunction() { 
    var elem = $('#id').removeClass('someClass').addClass('anotherClass'); 
    return elem; 
} 

removeClassとaddClassが呼び出され、正しい値を持つかどうかをテストします。私はスタブにsinonを使用していますが、私はエラーを受け取ります。

+0

なぜ 'console.log()'だけではないのですか? https://jsfiddle.net/tr_santi/4LugsLdc/また、関数呼び出しの前後で要素に付加されたクラスを表示したい場合は、https://jsfiddle.net/tr_santi/4LugsLdc/2/ – Santi

+0

私は、これは私が 'console.log'を使うことができない理由です – flpms

答えて

0

このように、blog postのように、returnsプロパティの場合は2つのスタブコールを使用してこれを実現できます。

この場合

function myFunction() { 
    var elem = $('#id').removeClass('someClass').addClass('anotherClass'); 
    return elem; 
} 

と、このテストcenario

it('your test case', function(done) { 
    var jQueryFunctions = { 
     addClass: function(params) { 
      assert.equals(params, 'your assertion'); 
     }, 
     removeClass: function() {} 
    }; 

    sinon.stub(jQueryFunctions, 'addClass').returns(jQueryFunctions); 
    sinon.stub(jQueryFunctions, 'addClass').returns(jQueryFunctions); 

    sinon.stub(window, '$').returns(jQueryFunctions);  
}); 

にそれは簡単には非常に簡単で、です。

関連する問題