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