Spec-Zone.ru › Sinon.JS 12

Утверждения

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.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/v12/assertions

Spec-Zone.ru

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