2012-03-30 32 views
8

有沒有什麼方法可以找到sinon.js中所有活躍的間諜?我希望能夠做這樣的事情:如何在茉莉花每次測試後自動恢復所有sinon.js間諜?

afterEach -> 
    sinon.restoreAllSpies() 

it "should not create a new MyClass", -> 
    spy = sinon.spy(window, 'MyClass') 
    expect(spy).not.toHaveBeenCalled() 

目前,我需要辛苦(!和錯誤pronedly)做到這一點:

it "should not create a new MyClass", -> 
    spy = sinon.spy(window, 'MyClass') 
    expect(spy).not.toHaveBeenCalled() 
    window.MyClass.restore() 

任何想法?

回答

4

我不這麼認爲,因爲它只是用間諜替換函數,它不會在內部保存所有間諜。因此,您可以將所有間諜存儲在數組中,並在afterEach上重置它們,或者在beforeEach上創建/覆蓋新的間諜。

+1

何其不幸:( – bhuga 2012-04-18 18:23:38

12

答案在這裏找到:Cleaning up sinon stubs easily

基本上是:

sandbox = sinon.sandbox.create() 
sandbox.spy(object1, 'methodName') 
sandbox.spy(object2, 'methodName') 
sandbox.restore()