2016-12-02 6 views
0

我々が持っている場合はSinon:テスト関数呼び出しとVARの変化の順序

// arrange 
var testVar = 0; 
var testFunction = sandbox.stub(); 

// act 
TestClass.TestMethod(); // it changes testVar and calls testFunction 

testFunctionが呼び出される前にtestVarが変更されたかどうかをテストする方法はありますか?

編集:のように見えません。しかし!変数がオブジェクトプロパティであれば、同様のことができます。下の自分の答えをチェックしてください。

+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch – mplungjan

+0

良いものが、それはヤモリだけだ、と私はここでユニットテストをしています:)私はプロキシを使って私の道を行くことができました... –

+1

スカラー変数が変化するかどうかを検出するためにSinonもプロキシも使用できません。 – robertklep

答えて

0

これは本当にできないようです。

しかし、私はオブジェクトプロパティでテストする方法を見つけました。例の擬似コード:

before(function() { 
    var functionCallOrder = []; 

    document.body.classList.add = function() { 
     functionCallOrder.push('added class'); 
    }; 

    Object.defineProperty(document.body, 'scrollTop', { 
     set: function() { 
      functionCallOrder.push('changed viewport location'); 
     } 
    }); 

    it('should set a class before changing the viewport location'), function() { 
      // act 
      MyModule.methodThatDoesWhatTheDescriptionSays(); 

      // assert 
      expect(functionCallOrder).to.deep.equal([ 
       'added class', 
       'changed viewport location' 
      ]); 
    }); 
}); 
関連する問題