Spec-Zone.ru › Sinon.JS 6
Эти документы из более старой версии sinon. Вы хотите получить самые свежие документы?

Сопоставители

Сопоставители могут передаваться в качестве аргументов функциям 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.match.in(array)

Требуется, чтобы значение находилось в array.

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, но свойство должно быть определено самим значением. Унаследованные свойства игнорируются.

sinon.match.hasNested(propertyPath[, expectation])

Требуется, чтобы значение определяло заданное propertyPath. Поддерживаются обозначения точка (prop.prop) и квадратные скобки (prop[0]) как в Lodash.get.

Свойство может быть унаследовано через цепочку прототипов. Если указано необязательное ожидаемое значение, значение по пути свойства глубоко сравнивается с ожидаемым значением. Ожидаемое значение может быть другим сопоставителем.

sinon.match.hasNested("a[0].b.c");

// Where actual is something like
var actual = { "a": [{ "b": { "c": 3 } }] };

sinon.match.hasNested("a.b.c");

// Where actual is something like
var actual = { "a": { "b": { "c": 3 } } };

sinon.match.every(matcher)

Требуется, чтобы каждый элемент Array, Set или Map, или альтернативно каждое значение Object соответствовало заданному matcher.

sinon.match.some(matcher)

Требуется, чтобы хотя бы один элемент Array, Set или Map, или альтернативно хотя бы одно значение Object соответствовало заданному matcher.

Комбинирование сопоставителей

Все сопоставители реализуют 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–2018 Christian Johansen
Licensed under the BSD License.
https://sinonjs.org/releases/v6.3.5/matchers

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API