Утверждения
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.calledOnceWithMatch(spyOrSpyCall, arg1, arg2, ...)
Проходит, если spy был вызван один и только один раз с соответствующими аргументами.
Возможна проверка конкретного вызова шпиона: sinon.assert.calledOnceWithMatch(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–2022 Christian Johansen
Licensed under the BSD License.
https://sinonjs.org/releases/v14/assertions