Spec-Zone.ru › Sinon.JS 4

Утверждения

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

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

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

© 2010–2018 Christian Johansen
Licensed under the BSD License.
http://sinonjs.org/releases/v4.5.0/assertions

Spec-Zone.ru

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