Sinon.JS 7

Fakes




sinon

Fakes

परिचय

fake वी 5 के साथ सिनॉन के साथ पेश किया गया था। यह spies और stubs से अवधारणाओं को सरल और विलय करता है।

सिनॉन में, एक fake एक Function जो अपने सभी कॉलों के लिए तर्कों, वापसी मूल्य, इस के मूल्य और अपवाद (यदि कोई हो) को रिकॉर्ड करता है।

यह व्यवहार के साथ या बिना बनाया जा सकता है; यह एक मौजूदा फ़ंक्शन को लपेट सकता है।

एक नकली अपरिवर्तनीय है: एक बार बनाए जाने के बाद, व्यवहार नहीं बदलेगा।

spies और stubs विधियों के विपरीत, sinon.fake API केवल नकली बनाना जानता है, और परीक्षण के तहत सिस्टम में उन्हें प्लग करने के साथ ही चिंता नहीं करता है। परीक्षण के तहत सिस्टम में sinon.replace* प्लग करने के लिए, आप sinon.replace* विधियों का उपयोग कर सकते हैं।

फर्जी बनाना

// create a basic fake, with no behavior
var fake = sinon.fake();

fake();

console.log(fake.callCount);
// 1

व्यवहार से लड़ता है

नकली व्यवहार के साथ बनाया जा सकता है, जिसे नकली बनाये जाने के बाद बदला नहीं जा सकता।

sinon.fake.returns(value);

एक नकली बनाता है जो value तर्क लौटाता है

var fake = sinon.fake.returns('apple pie');

fake();
// apple pie

sinon.fake.throws(value);

एक नकली बनाता है जो message संपत्ति के रूप में दिए गए मूल्य के साथ एक Error फेंकता है।

यदि कोई value तर्क के रूप में पारित किया जाता है, तो वह फेंक दिया गया मान होगा। यदि कोई अन्य मान पारित किया गया है, तो वह थ्रू Error की message संपत्ति के लिए उपयोग किया जाएगा।

var fake = sinon.fake.throws(new Error('not apple pie'));

fake();
// Error: not apple pie

sinon.fake.resolves(value);

एक नकली बनाता है जो पारित मूल्य के लिए एक हल किया हुआ Promise लौटाता है।

sinon.fake.rejects(value);

एक नकली बनाता है जो पारित मूल्य के लिए एक अस्वीकृत Promise लौटाता है।

यदि कोई value तर्क के रूप में पारित किया जाता है, तो वह वादा का मूल्य होगा। यदि कोई अन्य मूल्य पारित किया जाता है, तो वह वादा द्वारा लौटाए गए Error के message संपत्ति के लिए उपयोग किया जाएगा।

sinon.fake.yields(callback[, value1, ..., valueN]);

fake अंतिम तर्क को कॉलबैक होने की उम्मीद करता है और दिए गए तर्कों के साथ इसे लागू करेगा।

var fake = sinon.fake.yields('hello world');

fake(console.log);
// hello world

sinon.fake.yieldsAsync(callback[, value1, ..., valueN]);

fake अंतिम तर्क को कॉलबैक होने की उम्मीद करता है और दिए गए तर्कों के साथ इसे अतुल्यकालिक रूप से लागू करेगा।

var fake = sinon.fake.yieldsAsync('hello world');

fake(console.log);
// hello world

sinon.fake(func);

व्यवहार को प्रदान करने के लिए इसे छोड़कर, सभी इंटरैक्शन को रिकॉर्ड करने के लिए एक मौजूदा Function लपेटता है।

यह तब उपयोगी होता है जब जटिल व्यवहार को sinon.fake.* द्वारा कवर नहीं किया जाता है sinon.fake.* किसी मौजूदा फ़ंक्शन या विधि को लपेटते समय विधियों की आवश्यकता होती है।

उदाहरण गुण

f.callback

यह संपत्ति आसानी से अंतिम में अंतिम कॉलबैक के लिए एक संदर्भ प्राप्त करने की सुविधा है।

var f = sinon.fake();
var cb1 = function () {};
var cb2 = function () {};

f(1, 2, 3, cb1);
f(1, 2, 3, cb2);

f.callback === cb2;
// true

जासूसी कॉल में एक ही सुविधा जोड़ी गई है:

f.getCall(1).callback === cb2;
// true
//
f.lastCall.callback === cb2;
// true

f.lastArg

यह प्रॉपर्टी फर्जी में अंतिम कॉल में पारित अंतिम तर्क का संदर्भ प्राप्त करने का एक सुविधाजनक तरीका है।

var f = sinon.fake();
var date1 = new Date();
var date2 = new Date();

f(1, 2, date1);
f(1, 2, date2);

f.lastArg === date2;
// true

जासूसी कॉल में एक ही सुविधा जोड़ी गई है:

f.getCall(0).lastArg === date1;
// true
f.getCall(1).lastArg === date2;
// true

f.lastCall.lastArg === date2;
// true

परीक्षण के तहत प्रणाली में नकली जोड़ना

sinon.spy और sinon.stub विपरीत, sinon.fake केवल परीक्षण के तहत प्रणाली में गुणों को बदलने के बारे में नहीं, नकली बनाने के बारे में जानता है।

किसी प्रॉपर्टी को बदलने के लिए, आप sinon.replace विधि का उपयोग कर सकते हैं।

var fake = sinon.fake.returns('42');

sinon.replace(console, 'log', fake);

console.log('apple pie');
// 42

जब आप प्रतिस्थापित गुणों को पुनर्स्थापित करना चाहते हैं, तो बस sinon.restore विधि को कॉल करें।

// restores all replaced properties set by sinon methods (replace, spy, stub)
sinon.restore();