Spec-Zone.ru › Sinon.JS 15

Утверждения

Sinon.JS поставляется с набором утверждений, которые отражают большинство методов и свойств проверки поведения шпионских объектов и заглушек. Преимущество использования утверждений заключается в том, что невыполненные ожидания для заглушек и шпионских объектов могут быть выражены непосредственно как ошибки утверждений с подробными и полезными сообщениями об ошибках.

Чтобы убедиться, что утверждения хорошо интегрируются с вашей тестовой средой, вы должны настроить либо sinon.assert.fail либо sinon.assert.failException и изучить sinon.assert.expose и sinon.assert.pass.

Утверждения могут использоваться как с шпионскими объектами, так и с заглушками.

"test should call subscribers with message as first argument" : function () {
    var message = "an example message";
    var spy = sinon.spy();

    PubSub.subscribe(message, spy);
    PubSub.publishSync(message, "some payload");

    sinon.assert.calledOnce(spy);
    sinon.assert.calledWith(spy, message);
}

API утверждений

sinon.assert.fail(message)

Каждое утверждение терпит неудачу, вызывая этот метод.

По умолчанию он выбрасывает ошибку типа sinon.assert.failException.

Если тестовая среда ищет ошибки утверждений, проверяя конкретное исключение, вы можете переопределить тип выбрасываемого исключения. Если это не подходит для вашей тестовой среды, переопределите метод fail, чтобы сделать правильные действия.

sinon.assert.failException;

По умолчанию AssertError.

sinon.assert.pass(assertion);

Вызывается каждый раз, когда assertion проходит успешно.

По умолчанию реализация ничего не делает.

sinon.assert.notCalled(spy);

Проходит, если spy никогда не вызывался.

sinon.assert.called(spy);

Проходит, если spy был вызван хотя бы один раз.

sinon.assert.calledOnce(spy);

Проходит, если spy был вызван один и только один раз.

sinon.assert.calledTwice(spy);

Проходит, если spy был вызван ровно дважды.

sinon.assert.calledThrice(spy)

Проходит, если spy был вызван ровно трижды.

sinon.assert.callCount(spy, num)

Проходит, если spy был вызван ровно num раз.

sinon.assert.callOrder(spy1, spy2, ...)

Проходит, если предоставленные шпионские объекты были вызваны в указанном порядке.

sinon.assert.calledOn(spyOrSpyCall, obj)

Проходит, если spy был когда-либо вызван с obj в качестве значения this.

Можно утверждать о конкретном вызове шпионского объекта: sinon.assert.calledOn(spy.firstCall, arg1, arg2, ...);.

sinon.assert.alwaysCalledOn(spy, obj)

Проходит, если spy всегда вызывался с obj в качестве значения this.

sinon.assert.calledWith(spyOrSpyCall, arg1, arg2, ...);

Проходит, если spy был вызван с предоставленными аргументами.

Можно утверждать о конкретном вызове шпионского объекта: sinon.assert.calledWith(spy.firstCall, arg1, arg2, ...);.

sinon.assert.alwaysCalledWith(spy, arg1, arg2, ...);

Проходит, если spy всегда вызывался с предоставленными аргументами.

sinon.assert.neverCalledWith(spy, arg1, arg2, ...);

Проходит, если spy никогда не вызывался с предоставленными аргументами.

sinon.assert.calledWithExactly(spyOrSpyCall, arg1, arg2, ...);

Проходит, если spy был вызван с предоставленными аргументами и ни с какими другими.

Можно утверждать о конкретном вызове шпионского объекта: sinon.assert.calledWithExactly(spy.getCall(1), arg1, arg2, ...);.

sinon.assert.calledOnceWithExactly(spyOrSpyCall, arg1, arg2, ...);

Проходит, если spy был вызван один и только один раз с предоставленными аргументами и ни с какими другими.

Можно утверждать о конкретном вызове шпионского объекта: sinon.assert.calledOnceWithExactly(spy.getCall(1), arg1, arg2, ...);.

sinon.assert.alwaysCalledWithExactly(spy, arg1, arg2, ...);

Проходит, если spy всегда вызывался с предоставленными аргументами и ни с какими другими.

sinon.assert.calledWithMatch(spyOrSpyCall, arg1, arg2, ...)

Проходит, если spy был вызван с соответствующими аргументами.

Это ведет себя так же, как sinon.assert.calledWith(spy, sinon.match(arg1), sinon.match(arg2), ...).

Можно утверждать о конкретном вызове шпионского объекта: sinon.assert.calledWithMatch(spy.secondCall, arg1, arg2, ...);.

sinon.assert.calledOnceWithMatch(spyOrSpyCall, arg1, arg2, ...)

Проходит, если spy был вызван один и только один раз с соответствующими аргументами.

Можно утверждать о конкретном вызове шпионского объекта: sinon.assert.calledOnceWithMatch(spy.secondCall, arg1, arg2, ...);.

sinon.assert.alwaysCalledWithMatch(spy, arg1, arg2, ...)

Проходит, если spy всегда вызывался с соответствующими аргументами.

Это ведет себя так же, как sinon.assert.alwaysCalledWith(spy, sinon.match(arg1), sinon.match(arg2), ...).

sinon.assert.calledWithNew(spyOrSpyCall)

Проходит, если spy был вызван с оператором new.

Можно утверждать о конкретном вызове шпионского объекта: sinon.assert.calledWithNew(spy.secondCall, arg1, arg2, ...);.

sinon.assert.neverCalledWithMatch(spy, arg1, arg2, ...)

Проходит, если spy никогда не вызывался с соответствующими аргументами.

Это ведет себя так же, как sinon.assert.neverCalledWith(spy, sinon.match(arg1), sinon.match(arg2), ...).

sinon.assert.threw(spyOrSpyCall, exception);

Проходит, если spy бросил указанное исключение.

Исключение может быть String, обозначающим его тип, или фактическим объектом.

Если предоставлен только один аргумент, утверждение проходит, если spy когда-либо выбрасывал какое-либо исключение.

Можно утверждать о конкретном вызове шпионского объекта: sinon.assert.threw(spy.thirdCall, exception);.

sinon.assert.alwaysThrew(spy, exception);

Как указано выше, требуется только для всех вызовов шпионского объекта.

sinon.assert.match(actual, expectation);

Использует sinon.match для проверки того, можно ли считать аргументы совпадением.

var sinon = require("sinon");

describe("example", function () {
  it("should match on `x` property, and ignore `y` property", function () {
    var expected = { x: 1 },
      actual = { x: 1, y: 2 };

    sinon.assert.match(actual, expected);
  });
});

sinon.assert.expose(object, options);

Выставляет утверждения в другой объект, чтобы лучше интегрировать их с тестовой средой. Например, JsTestDriver использует глобальные утверждения, и чтобы утверждения Sinon.JS появились рядом с ними, вы можете сделать так.

sinon.assert.expose(this);

Это даст вам assertCalled(spy), assertCallOrder(spy1, spy2, ...) и так далее.

Метод принимает необязательный объект options с двумя параметрами.

prefix
это префикс, который нужно добавить к утверждениям. По умолчанию это "assert", поэтому sinon.assert.called становится target.assertCalled. Передавая пустую строку, экспонированный метод станет target.called.
includeFail
true по умолчанию копирует свойства fail и failException

© 2010–2022 Christian Johansen
Licensed under the BSD License.
https://sinonjs.org/releases/v15/assertions

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API