Spec-Zone.ru › Sinon.JS 3

Утверждения

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(spy, obj)

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

sinon.assert.alwaysCalledOn(spy, obj)

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

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

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

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

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

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

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

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

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

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

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

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

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

Это работает так же, как и sinon.assert.calledWith(spy, sinon.match(arg1), sinon.match(arg2), ...).

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

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

Это работает так же, как и sinon.assert.alwaysCalledWith(spy, sinon.match(arg1), sinon.match(arg2), ...).

sinon.assert.calledWithNew(spy)

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

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

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

Это работает так же, как и sinon.assert.neverCalledWith(spy, sinon.match(arg1), sinon.match(arg2), ...).

sinon.assert.threw(spy, exception);

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

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

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

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–2017 Christian Johansen
Licensed under the BSD License.
http://sinonjs.org/releases/v3.3.0/assertions

Spec-Zone.ru

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