Как я могу автоматически восстанавливать все шпионы sinon.js после каждого теста в Jasmine?

Есть ли способ найти всех активных шпионов в 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()

Любые идеи?


person bhuga    schedule 30.03.2012    source источник


Ответы (2)


Я так не думаю, потому что все, что он делает, это заменяет функцию шпионом, он не сохраняет всех шпионов внутри. Таким образом, вы либо сохраняете всех шпионов в массиве и сбрасываете их в afterEach, либо просто создаете/переопределяете новых шпионов в beforeEach.

person Andreas Köberle    schedule 31.03.2012

Ответ найден здесь: Легкая очистка заглушек sinon

В основном:

sandbox = sinon.sandbox.create()
sandbox.spy(object1, 'methodName')
sandbox.spy(object2, 'methodName')
sandbox.restore()
person Tomas Romero    schedule 08.01.2014