2012-03-30 11 views
8

Có cách nào tôi có thể tìm thấy tất cả các điệp viên hoạt động trong sinon.js không? Tôi muốn để có thể làm điều gì đó như thế này:Làm cách nào tôi có thể tự động khôi phục tất cả gián điệp sinon.js sau mỗi lần kiểm tra trong Jasmine?

afterEach -> 
    sinon.restoreAllSpies() 

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

Hiện nay, tôi cần phải chăm (! Và lỗi pronedly) làm điều này:

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

Bất kỳ ý tưởng?

Trả lời

4

Tôi không nghĩ như vậy, gây ra tất cả những gì nó làm là thay thế chức năng bằng một gián điệp, nó không lưu tất cả gián điệp trong nội bộ. Vì vậy, ether bạn lưu trữ tất cả các điệp viên trong một mảng và thiết lập lại chúng trên afterEach, hoặc chỉ tạo/ghi đè lên các điệp viên mới trên beforeEach.

+1

Làm thế nào đáng tiếc :( – bhuga

12

trả lời tìm thấy ở đây: Cleaning up sinon stubs easily

Về cơ bản:

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