Утверждения
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/v13/assertions