如何在Jasmine的每次测试后自动恢复所有sinon.js间谍?

时间:2012-03-30 21:24:15

标签: javascript jasmine sinon

有什么方法可以找到sinon.js中所有活跃的间谍?我希望能够做到这样的事情:

afterEach ->
  sinon.restoreAllSpies()

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

目前,我需要费力地(而且错误地!)这样做:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:15)

在此处找到答案:Cleaning up sinon stubs easily

基本上:

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

答案 1 :(得分:4)

我不这么认为,因为所有这一切都是用间谍取代这个功能,它不会在内部保存所有间谍。所以,你将所有间谍存储在一个数组中并在afterEach上重置它们,或者只是在beforeEach上创建/覆盖新的间谍。