Утверждения
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, ...) и так далее.
Метод принимает необязательный объект опций с двумя опциями.
- 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/v11/assertions