Подтвердить что ты не робот

Reset ", названный" Count on Sinon Spy

Как reset "вызванный" подсчет на шпионах Sinon перед каждым тестом?

Вот что я делаю сейчас:

beforeEach(function() {
  this.spied = sinon.spy(Obj.prototype, 'spiedMethod');
});

afterEach(function() {
  Obj.prototype.spiedMethod.restore();
  this.spied.reset();
});

Но когда я проверяю количество вызовов в тесте:

it('calls the method once', function() {
  $.publish('event:trigger');
  expect(this.spied).to.have.been.calledOnce;
});

... тест выходит из строя и сообщает, что метод был вызван X числом раз (один раз для каждого предыдущего теста, который также вызывал одно и то же событие).

4b9b3361

Ответ 1

Этот вопрос был задан некоторое время назад, но все еще может быть интересным, особенно для людей, которые не знакомы с синоном.

this.spied.reset() не требуется, поскольку Obj.prototype.spiedMethod.restore(); удаляет шпиона.

Обновление:

  • Если вы просто хотите reset количество вызовов, используйте reset. Это держит шпиона.
  • Чтобы удалить шпион, используйте restore.

При работе с sinon вы можете использовать утверждения sinon для расширенного тестирования. Поэтому вместо написания expect(this.spied).to.have.been.calledOnce; можно написать:

sinon.assert.calledOnce(Obj.prototype.spiedMethod);

Это также работает с this.spied:

sinon.assert.calledOnce(this.spied);

Существует множество других методов утверждения синонов. Рядом с calledOnce есть также calledTwice, calledWith, neverCalledWith и многое другое на утверждениях sinon.