Как я могу автоматически восстановить всех шпионов sinon.js после каждого теста в Жасмин? - PullRequest
10 голосов
/ 31 марта 2012

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

15 голосов
/ 09 января 2014

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

В основном:

sandbox = sinon.sandbox.create()
sandbox.spy(object1, 'methodName')
sandbox.spy(object2, 'methodName')
sandbox.restore()
4 голосов
/ 31 марта 2012

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

...