Spec-Zone.ru › Sinon.JS 6
Эти документы из более старой версии sinon. Вы хотите перейти к последней версии документов?

Утверждения

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.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, ...) и так далее.

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

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

© 2010–2018 Christian Johansen
Licensed under the BSD License.
https://sinonjs.org/releases/v6.3.5/assertions

Spec-Zone.ru

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