Spec-Zone.ru › Sinon.JS 8

Утверждения

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–2020 Christian Johansen
Licensed under the BSD License.
https://sinonjs.org/releases/v8.1.1/assertions

Spec-Zone.ru

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