Утверждения
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–2020 Christian Johansen
Licensed under the BSD License.
https://sinonjs.org/releases/v10.0.1/assertions