Сопоставители
Сопоставители могут передаваться в качестве аргументов функциям spy.calledOn, spy.calledWith, spy.returned и соответствующим функциям sinon.assert а также spy.withArgs. Сопоставители позволяют быть более размытыми или более точными относительно ожидаемого значения.
"test should assert fuzzy": function () {
var book = {
pages: 42,
author: "cjno"
};
var spy = sinon.spy();
spy(book);
sinon.assert.calledWith(spy, sinon.match({ author: "cjno" }));
sinon.assert.calledWith(spy, sinon.match.has("pages", 42));
}
"test should stub method differently based on argument types": function () {
var callback = sinon.stub();
callback.withArgs(sinon.match.string).returns(true);
callback.withArgs(sinon.match.number).throws("TypeError");
callback("abc"); // Returns true
callback(123); // Throws TypeError
}
API сопоставителей
sinon.match(number);
Требует, чтобы значение было == заданному числу.
sinon.match(string);
Требует, чтобы значение было строкой и ожидаемым значением являлась подстрока.
sinon.match(regexp);
Требует, чтобы значение было строкой и соответствовало заданному регулярному выражению.
sinon.match(object);
Требует, чтобы значение не было null или undefined и имело как минимум такие же свойства, как у expectation.
Это поддерживает вложенные сопоставители.
sinon.match(function)
См. custom matchers.
sinon.match.any
Сопоставляет что угодно.
sinon.match.defined
Требует, чтобы значение было определено.
sinon.match.truthy
Требует, чтобы значение было истинным.
sinon.match.falsy
Требует, чтобы значение было ложным.
sinon.match.bool
Требует, чтобы значение было Boolean
sinon.match.number
Требует, чтобы значение было Number.
sinon.match.string
Требует, чтобы значение было String.
sinon.match.object
Требует, чтобы значение было Object.
sinon.match.func
Требует, чтобы значение было Function.
sinon.match.array
Требует, чтобы значение было Array.
sinon.match.regexp
Требует, чтобы значение было регулярным выражением.
sinon.match.date
Требует, чтобы значение было объектом `Date`.
sinon.match.same(ref)
Требует, чтобы значение строго равнялось ref.
sinon.match.typeOf(type)
Требует, чтобы значение было заданного типа, где type может быть одним из "undefined", "null", "boolean", "number", "string", "object", "function", "array", "regexp" или "date".
sinon.match.instanceOf(type)
Требует, чтобы значение было экземпляром заданного type.
sinon.match.has(property[, expectation])
Требует, чтобы значение определяло заданное property.
Свойство может быть унаследовано через цепочку прототипов. Если указано необязательное ожидаемое значение, значение свойства глубоко сравнивается с ожидаемым значением. Ожидаемое значение может быть другим сопоставителем.
sinon.match.hasOwn(property[, expectation])
То же, что и sinon.match.has, но свойство должно быть определено самим значением. Унаследованные свойства игнорируются.
Объединение сопоставителей
Все сопоставители реализуют and и or . Это позволяет логически объединять несколько сопоставителей. Результатом является новый сопоставитель, который требует, чтобы оба (и) или один из сопоставителей (или) вернули true.
var stringOrNumber = sinon.match.string.or(sinon.match.number);
var bookWithPages = sinon.match.instanceOf(Book).and(sinon.match.has("pages"));
Настраиваемые сопоставители
Настраиваемые сопоставители создаются с помощью фабрики sinon.match, которая принимает функцию проверки и необязательное сообщение.
Функция проверки принимает значение в качестве единственного аргумента, возвращает true если значение соответствует ожидаемому значению и false в противном случае. Строка сообщения используется для генерации сообщения об ошибке в случае, если значение не соответствует ожидаемому.
var trueIsh = sinon.match(function (value) {
return !!value;
}, "trueIsh");
© 2010–2017 Christian Johansen
Licensed under the BSD License.
http://sinonjs.org/releases/v1.17.7/matchers