/ / कैसे वादा करने पर qunit जोर चलाने के लिए - जावास्क्रिप्ट, वादा, qunit, rsvp.js, rsvp- वादा

वादा को हल करने के लिए क्यूनीट दावों को कैसे चलाएं - जावास्क्रिप्ट, वादा, qunit, rsvp.js, rsvp-वादा

मैं एक फ़ंक्शन के लिए एक परीक्षण लिख रहा हूं जो एक रिटर्न देता हैवादा, वादा करने या अस्वीकार करने पर वादे चलाने में सक्षम नहीं है। मैं इस परियोजना पर ES6 का उपयोग नहीं कर सकता, इसलिए मैं rsvp.js लाइब्रेरी का उपयोग कर रहा हूं जो वादे / ए + विनिर्देश को लागू करने का दावा करता है। मैं नवीनतम qunit संस्करण 1.17.1 का उपयोग कर रहा हूं

परीक्षण के तहत समारोह:

var loadGroups = function(data) {
return new RSVP.Promise(function(resolve, reject) {
var groups = [];
// ... some code to populate the groups array
if(groups.length > 0) {
resolve(groups);
} else {
reject("No groups were loaded");
}
});
};

सफलता की परीक्षा:

test("success test", function(assert) {
assert.expect(1);

var promise = loadGroups(testData);

promise.then(function(groups) {
assert.deepEquals(groups.length, 1);
});

return promise;
});

यह "1 अनुमानों की उम्मीद के साथ विफल रहता है, लेकिन 0 चलाए गए थे"


विफलता परीक्षण:

test("failure test", function(assert) {
assert.expect(1);

var promise = loadGroups([]);

promise.then(null, function(message) {
assert.equals(message, "No groups were loaded");
});

return promise;
});

यह "खाली किए गए समूहों को लोड करते समय वादा करने के दौरान अस्वीकार किए गए वादे के साथ विफल रहता है: कोई समूह लोड नहीं किया गया था"

उत्तर:

उत्तर № 1 के लिए 10

वादे पीछा करके काम करते हैं। वादे मूल्यों पर अपरिवर्तनीय आवरण हैं।

जब तुम करोगे:

promise.then(function(e){
// do something
});

आप नहीं बदल रहे हैं promise आप इसके बजाय एक नया वादा कर रहे हैं। इसके बजाय, आपको वादा करने की ज़रूरत है:

test("success test", function(assert) {
assert.expect(1);

var promise = loadGroups(testData);

// return the `then` and not the original promise.
return promise.then(function(groups) {
assert.deepEquals(groups.length, 1);
});

});