2014-01-29 3 views
1

현재 NodeJS 앱을 작성 중이며 기능 테스트를 작성하고 싶습니다. SinonJS는 스파이/스텁/모의 라이브러리 중 선택하는 것으로 보이지만 기능에 대한 메소드를 스텁하는 방법을 알아낼 수 없습니다. 예 :SinonJS를 사용하여 라이브러리 스텁하기

내가 ExecSync라는 라이브러리를 사용한다고 가정 해 보겠습니다. 내 사양 내에서 해당 라이브러리에 sh() 메서드를 스텁 싶지만 올바르게 작동하지 않는 것 같습니다. 누군가 다른 스팩 파일의 내부에서 라이브러리 메소드를 스터 빙하는 예제를 제공 할 정도로 친절한가요?

는 명확하게하려면 :

  • spec.js - 나는 내 테스트를 쓰고 있어요 곳입니다.
  • util.js - 여기서 테스트하는 메소드가 있습니다. 이 메서드는 execSync.sh()를 호출하며 npm 및 require()을 통해 포함됩니다.

모든 도움을 주시면 감사하겠습니다. ,

당신이 종속성을 스텁 수 없습니다
describe('A test', function() { 
    beforeEach(function() { 
    // what you want to stub is passed as a string 
    sinon.stub(ExecSync, 'sh').yields(null,40); 
    }); 

    afterEach(function() { 
    ExecSync.restore(); 
    }); 

    it('has behaviour', function() { 
    ExecSync.sh(function(err, res) { 
     // err = null, res = 40 
    }); 
    }); 
}); 

또 다른 일반적인 연습, 테스트중인 모듈에 그 의존성을 작성하는 것입니다

답변

2

일부 코드는 좋은 것, 그러나 보통이이 (사용 모카) 같이 달성 될 수있다

mymodule.ExecSync = function(arg) { 
    ExecSync.sh(arg); 
}; 

그런 다음 모듈에 ExecSync를 스텁하고 종속성을 전혀 호출 할 필요가 없습니다.

+0

두 번째 대답은 영리합니다. 도와 주셔서 감사합니다! –

관련 문제