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

는하지만, 그것의 게코 만, 나는 – mplungjan

+0

좋은 일이야 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch 여기에 단위 테스트를하고있다 :) 나는 프록시를 사용하여 나의 길을 가질 수 있었다 ... –

+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' 
      ]); 
    }); 
});