2016-07-02 3 views
2

sinon.js의 문서에 따르면 다음과 같이 할 수 있습니다 : var spy = sinon.spy(myFunc);,하지만 작동하지 않습니다.함수에 대한 Sinon 스파이가 작동하지 않습니다

var sinon = require("sinon"); 

describe('check bar calling', function(){ 
    it('should call bar once', function() { 
    var barSpy = sinon.spy(bar); 

    foo("aaa"); 

    barSpy.restore(); 
    sinon.assert.calledOnce(barSpy); 
    }); 
}); 

function foo(arg) { 
    console.log("Hello from foo " + arg); 
    bar(arg); 
} 

function bar(arg) { 
    console.log("Hellof from bar " + arg); 
} 
+0

[sinon 스파이 이용한 함수 호출 확인 및 인수 검사] 가능 중복 (https://stackoverflow.com/questions/29800733/verifying-function-call-and-inspecting-arguments-using-sinon-spies) –

답변

2

Sinon 그것은 모든 참조를 패치하지 않는 호출을 래핑 : 여기 내 노력입니다. 반환 값은 어설 션을 수행 할 수있는 래핑 된 함수입니다. 랩핑 된 함수가 아닌 모든 호출을 기록합니다. 호출자가 함수를 제공하도록 foo를 수정하면 스파이가 주입되고 스파이에서 호출 할 수 있습니다.

var sinon = require("sinon"); 

describe('check bar calling', function(){ 
    it('should call bar once', function() { 
    var barSpy = sinon.spy(bar); 

    foo("aaa", barSpy); 

    barSpy.restore(); 
    sinon.assert.calledOnce(barSpy); 
    }); 
}); 

function foo(arg, barFn) { 
    console.log("Hello from foo " + arg); 
    barFn(arg); 
} 

function bar(arg) { 
    console.log("Hellof from bar " + arg); 
} 
+0

고마워, 작동하지만'barSpy.restore();'없이 –