दिलचस्प पोस्ट
PHP का उपयोग कर फ़ोल्डर से सभी फाइलों को हटाना? Url / src / href विशेषता में दो फॉरवर्ड स्लैश फ़ाइल या विधानसभा को लोड नहीं किया जा सका 'System.Net.Http, संस्करण = 2.0.0.0 में एमवीसी 4 वेब एपीआई क्या psql में SELECT * FROM के लिए कोई शॉर्टकट है? पेंशन के लिए सेलेनियम के साथ पेज लोड होने तक कैसे इंतजार करना है? आप एचटीएमएल फॉर्म नेस्टिंग की सीमा को कैसे दूर करते हैं? विभिन्न फाइलों में स्रोत फाइलों के साथ मेकफाइल Int को बाइट कन्वर्ट कैसे करें 32 बिट आवेदन से 64 बिट रजिस्ट्री पढ़ना एसएसपी एमटीसी में कस्टम डेटटाइम मॉडल बाइंडरर वर्तमान पृष्ठ के किसी एक को संरक्षित करने के लिए प्रोटोकॉल (स्कीम) को छोड़कर निरपेक्ष यूआरएल 'आवश्यकता': ऐसे फाइल को लोड नहीं किया जा सकता है – `नौकागिरि \ नाकोगीरी '(लोड एर्रर) जब चल रहा है' रेल सर्वर ' जावास्क्रिप्ट में एक एकल उद्धरण (') कैसे बचें? रिमैप, नॉरमैप, नॉरमॅप और vnoremap मैपिंग कमांड के बीच अंतर क्या है? दृश्य स्टूडियो 2010 एक्सप्रेस में लक्ष्य सीपीयू सेटिंग्स को बदलें

मैं मोचा और चाय के साथ कैसे सही तरीके से परीक्षण करता हूं?

निम्न परीक्षण अजीब तरह से व्यवहार कर रहा है:

it('Should return the exchange rates for btc_ltc', function(done) { var pair = 'btc_ltc'; shapeshift.getRate(pair) .then(function(data){ expect(data.pair).to.equal(pair); expect(data.rate).to.have.length(400); done(); }) .catch(function(err){ //this should really be `.catch` for a failed request, but //instead it looks like chai is picking this up when a test fails done(err); }) }); 

मुझे उचित अस्वीकार किए गए वादे (और परीक्षण) को कैसे व्यवस्थित करना चाहिए?

मैं कैसे ठीक से एक असफल परीक्षण (यानी: expect(data.rate).to.have.length(400);

यह कार्यान्वयन मैं परीक्षण कर रहा हूं:

 var requestp = require('request-promise'); var shapeshift = module.exports = {}; var url = 'http://shapeshift.io'; shapeshift.getRate = function(pair){ return requestp({ url: url + '/rate/' + pair, json: true }); }; 

वेब के समाधान से एकत्रित समाधान "मैं मोचा और चाय के साथ कैसे सही तरीके से परीक्षण करता हूं?"

सबसे आसान बात यह है कि हाल के संस्करणों में मोचा के निर्माण में निर्मित वचनों का उपयोग करना होगा:

 it('Should return the exchange rates for btc_ltc', function() { // no done var pair = 'btc_ltc'; // note the return return shapeshift.getRate(pair).then(function(data){ expect(data.pair).to.equal(pair); expect(data.rate).to.have.length(400); });// no catch, it'll figure it out since the promise is rejected }); 

चूंकि इस दृष्टिकोण का वादा पूरा होने का अंत होता है, यह परीक्षण करना आसान होता है और आपको उन अजीब मामलों के बारे में सोचना पड़ेगा जिनके बारे में आप सोच रहे हैं जैसे अजीब done() हर जगह कॉल करता है।

यह एक लाभ है मोचा में इस समय जैस्मीन जैसे अन्य पुस्तकालय हैं। हो सकता है कि आप ची के वादे के रूप में भी जांचना चाहें जो इससे भी आसान (नहीं। तब) बना सकते हैं लेकिन व्यक्तिगत रूप से मैं वर्तमान संस्करण की स्पष्टता और सादगी को पसंद करता हूं

जैसा कि पहले ही बताया गया है , मोचा के नए संस्करण पहले से ही वादा किया है लेकिन चूंकि ओएच ने ची के बारे में विशेष रूप से पूछा, chai-as-promised पैकेज को इंगित करने के लिए यह केवल उचित है जो परीक्षण के लिए एक साफ वाक्य रचना प्रदान करता है:

चाइ-के-वादे के प्रयोग से

यहां बताया गया है कि आप वादा के लिए मामलों reject resolve और reject resolve लिए चै-व-वायर्ड का उपयोग कैसे कर सकते हैं:

 var chai = require('chai'); var expect = chai.expect; var chaiAsPromised = require("chai-as-promised"); chai.use(chaiAsPromised); ... it('resolves as promised', function() { return expect(Promise.resolve('woof')).to.eventually.equal('woof'); }); it('rejects as promised', function() { return expect(Promise.reject('caw')).to.be.rejectedWith('caw'); }); 

बिना चाय के वादे के लिए

यह वास्तव में स्पष्ट है कि क्या परीक्षण किया जा रहा है, यह एक ऐसा उदाहरण है जो बिना चाय के वादे के बिना कोडित है:

 it('resolves as promised', function() { return Promise.resolve("woof") .then(function(m) { expect(m).to.equal('woof'); }) .catch(function(m) { throw new Error('was not supposed to fail'); }) ; }); it('rejects as promised', function() { return Promise.reject("caw") .then(function(m) { throw new Error('was not supposed to succeed'); }) .catch(function(m) { expect(m).to.equal('caw'); }) ; });