Spec-Zone.ru › Sinon.JS 9

Утверждения

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/v9.2.2/assertions

Spec-Zone.ru

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