इस प्रश्न में कई, कई डुप्लिकेट हैं, जिनमें चाई अभिकथन पुस्तकालय का उल्लेख नहीं करने वाले प्रश्न शामिल हैं। यहां मूल बातें एक साथ एकत्र की गई हैं:
दावे को तुरंत मूल्यांकन करने के बजाय फ़ंक्शन को कॉल करना चाहिए।
assert.throws(x.y.z);
// FAIL. x.y.z throws an exception, which immediately exits the
// enclosing block, so assert.throw() not called.
assert.throws(()=>x.y.z);
// assert.throw() is called with a function, which only throws
// when assert.throw executes the function.
assert.throws(function () { x.y.z });
// if you cannot use ES6 at work
function badReference() { x.y.z }; assert.throws(badReference);
// for the verbose
assert.throws(()=>model.get(z));
// the specific example given.
homegrownAssertThrows(model.get, z);
// a style common in Python, but not in JavaScript
आप किसी भी पुस्तकालय के उपयोग से विशिष्ट त्रुटियों की जांच कर सकते हैं:
नोड
assert.throws(() => x.y.z);
assert.throws(() => x.y.z, ReferenceError);
assert.throws(() => x.y.z, ReferenceError, /is not defined/);
assert.throws(() => x.y.z, /is not defined/);
assert.doesNotThrow(() => 42);
assert.throws(() => x.y.z, Error);
assert.throws(() => model.get.z, /Property does not exist in model schema./)
चाहिए
should.throws(() => x.y.z);
should.throws(() => x.y.z, ReferenceError);
should.throws(() => x.y.z, ReferenceError, /is not defined/);
should.throws(() => x.y.z, /is not defined/);
should.doesNotThrow(() => 42);
should.throws(() => x.y.z, Error);
should.throws(() => model.get.z, /Property does not exist in model schema./)
चाई अपेक्षा
expect(() => x.y.z).to.throw();
expect(() => x.y.z).to.throw(ReferenceError);
expect(() => x.y.z).to.throw(ReferenceError, /is not defined/);
expect(() => x.y.z).to.throw(/is not defined/);
expect(() => 42).not.to.throw();
expect(() => x.y.z).to.throw(Error);
expect(() => model.get.z).to.throw(/Property does not exist in model schema./);
आपको अपवादों को संभालना चाहिए जो परीक्षण से 'बच' जाते हैं
it('should handle escaped errors', function () {
try {
expect(() => x.y.z).not.to.throw(RangeError);
} catch (err) {
expect(err).to.be.a(ReferenceError);
}
});
यह पहली बार भ्रामक लग सकता है। बाइक की सवारी की तरह, यह क्लिक करते ही हमेशा के लिए 'क्लिक' कर देता है।
model
उदाहरण में एक फ़ंक्शन होता है जिसे मैं प्राप्त करता / करती हूं, जो मुझे उम्मीद में कहा जाता है।