Сопоставители
Сопоставители могут передаваться в качестве аргументов в spy.calledOn, spy.calledWith, spy.returned и соответствующие sinon.assert функции, а также spy.withArgs. Сопоставители позволяют быть более расплывчатыми или более конкретными в отношении ожидаемого значения.
"test should assert fuzzy": function () {
var book = {
pages: 42,
author: "cjno"
id: {
isbn10: "0596517742",
isbn13: "978-0596517748"
}
};
var spy = sinon.spy();
spy(book);
sinon.assert.calledWith(spy, sinon.match({ author: "cjno" }));
sinon.assert.calledWith(spy, sinon.match.has("pages", 42));
sinon.assert.calledWith(spy, sinon.match.has("id", sinon.match.has("isbn13", "978-0596517748")));
}
"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.array.deepEquals(arr)
Требуется, чтобы Array было глубоко равно другому.
sinon.match.array.startsWith(arr)
Требуется, чтобы Array начиналось с тех же значений, что и другое.
sinon.match.array.endsWith(arr)
Требуется, чтобы Array заканчивалось теми же значениями, что и другое.
sinon.match.array.contains(arr)
Требуется, чтобы Array содержало каждое из значений, имеющихся в заданном массиве.
sinon.match.map
Требуется, чтобы значение было Map.
sinon.match.map.deepEquals(map)
Требуется, чтобы Map было глубоко равно другому.
sinon.match.map.contains(map)
Требуется, чтобы Map содержало каждый из элементов заданного словаря.
sinon.match.set
Требуется, чтобы значение было Set.
sinon.match.set.deepEquals(set)
Требуется, чтобы Set было глубоко равно другому.
sinon.match.set.contains(set)
Требуется, чтобы Set содержало каждый из элементов заданного набора.
sinon.match.regexp
Требуется, чтобы значение было регулярным выражением.
sinon.match.date
Требуется, чтобы значение было объектом Date.
sinon.match.symbol
Требуется, чтобы значение было Symbol.
С sinon@2.0.0
sinon.match.same(ref)
Требуется, чтобы значение строго было равно ref.
sinon.match.typeOf(type)
Требуется, чтобы значение было заданного типа, где type может быть одним из "undefined", "null", "boolean", "number", "string", "object", "function", "array", "regexp", "date" или "symbol".
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/v2.4.1/matchers