Sinon.JS 7

Matchers




sinon

Matchers

माचिस को जासूस के रूप में पास किया जा सकता है। मिलानकर्ता अपेक्षित मूल्य के बारे में अधिक अस्पष्ट या अधिक विशिष्ट होने की अनुमति देते हैं।

"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
}

मैचर्स एपीआई

sinon.match(number);

दिए गए नंबर पर == का मान होना चाहिए।

sinon.match(string);

एक स्ट्रिंग होने के लिए मूल्य की आवश्यकता होती है और एक विकल्प के रूप में अपेक्षा होती है।

sinon.match(regexp);

एक स्ट्रिंग होने के लिए मूल्य की आवश्यकता होती है और दिए गए नियमित अभिव्यक्ति से मेल खाती है।

sinon.match(object);

मान को null या undefined नहीं करने की आवश्यकता है और expectation 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 करने के लिए Set आवश्यकता होती है।

sinon.match.regexp

एक नियमित अभिव्यक्ति होने के लिए मूल्य की आवश्यकता होती है।

sinon.match.date

Date ऑब्जेक्ट होने के लिए मान की आवश्यकता होती है।

sinon.match.symbol

एक Symbol होने के लिए मूल्य की आवश्यकता होती है।

sinon.match.in(array)

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.has लेकिन संपत्ति को स्वयं मूल्य द्वारा परिभाषित किया जाना चाहिए। निहित गुणों को नजरअंदाज कर दिया जाता है।

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

दिए गए propertyPath को परिभाषित करने के लिए मान की आवश्यकता है। prop.prop ( 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 हर मूल्य की आवश्यकता होती है।

sinon.match.some(matcher)

दिए गए माचिस से मिलान करने के लिए किसी Array किसी तत्व, Set या Map या वैकल्पिक रूप से किसी Object किसी भी मूल्य की आवश्यकता होती है।

मिलान करने वाले

सभी मैचर्स लागू होते हैं and / or । यह पारस्परिक रूप से उत्परिवर्ती मिलानकर्ताओं को संयोजित करने की अनुमति देता है। परिणाम एक नया मिलान है जिसके लिए दोनों (और) या मैचर्स (या) में से एक को true करने की आवश्यकता होती 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 मेल खाता है, तो true । संदेश स्ट्रिंग का उपयोग त्रुटि संदेश उत्पन्न करने के लिए किया जाता है यदि मूल्य अपेक्षा से मेल नहीं खाता है।

var trueIsh = sinon.match(function (value) {
    return !!value;
}, "trueIsh");