2011-10-17 18 views
5

हमने एक विश्वसनीय वेब एपीआई लिखा है जो node.js. का उपयोग करके GET और PUT अनुरोधों का जवाब देता है। हमें एपीआई का परीक्षण करने में कुछ कठिनाइयां हैं। सबसे पहले, हम Zombie.js इस्तेमाल किया है, लेकिन यह अच्छी तरह से प्रलेखित तो हम इसे रखा अनुरोध करने के लिए नहीं मिल सका नहीं कर रहा है:जैस्मीन और node.js का उपयोग कर वेब एपीआई का परीक्षण

var zombie = require("zombie"); 

describe("description", function() { 
    it("description", function() { 
    zombie.visit("http://localhost:3000/", function (err, browser, status) { 
     expect(browser.text).toEqual("A") 
    }); 
    }); 
}); 

है कि हम किसी REST- ग्राहक restler कहा जाता है, उपयोग करने की कोशिश करने के बाद जो ठीक होगा, हम डॉन के बाद से किसी भी उन्नत ब्राउज़र सिमुलेशन की जरूरत नहीं है।

var rest = require('restler'); 
describe("description", function() { 
    it("description", function() { 
    rest.get("http://www.google.com").on('complete', function(data, response) { 
     // Should fail 
     expect(data).toMatch(/apa/i); 
    }); 
    }); 
}); 

हम वैकल्पिक परीक्षण चौखटे के बारे में कोई सुझाव के लिए आभारी हैं: यानी परीक्षण बेकार है, क्योंकि यह खत्म होने से पहले की सफलता पर 'कॉलबैक कहा जाता है - इस तथ्य यह है कि अनुरोध अतुल्यकालिक प्रतीत हो रहा है की वजह से विफल रहता है या तुल्यकालिक अनुरोध ग्राहकों।

+1

यह आपको रीस्टफुल परीक्षण नहीं देगा, लेकिन [vows] (http://vowsjs.org/) एक बहुत अच्छा नोड.जेएस आधारित परीक्षण ढांचा है। – hross

+0

टिप के लिए धन्यवाद, मैं इसे देख लूंगा। – Jesper

उत्तर

3

मैं इस बारे में उत्सुक था इसलिए मैंने थोड़ा और शोध किया। zombie के अलावा, आपके पास कुछ विकल्प हैं ...

आप http पुस्तकालय like this guy के साथ vows का उपयोग कर सकते हैं।

हालांकि, मुझे लगता है कि एपीआईसी का उपयोग करने के लिए एक बेहतर दृष्टिकोण हो सकता है, जो स्पष्ट रूप से vows पर बनाया गया है। awesome article over at nodejitsu that explains how to use it है।

यदि आप एक्सप्रेस का उपयोग कर रहे हैं तो expresso का उपयोग करना एक और दिलचस्प विचार है।

4

नोड के लिए, मिस्को हेवरी से जैस्मीन-नोड में असीमित समर्थन है और जैस्मीन लपेटता है।

https://github.com/mhevery/jasmine-node

आप परीक्षण हस्ताक्षर करने के लिए एक 'पूर्ण' पैरामीटर जोड़ने और कॉल अतुल्यकालिक कॉल पूरा करता है जब कि। आप टाइमआउट को भी कस्टमाइज़ कर सकते हैं (डिफ़ॉल्ट 500ms है)।

उदा। Github README से

it("should respond with hello world", function(done) { 
    request("http://localhost:3000/hello", function(error, response, body){ 
    done(); 
    }, 250); // timeout after 250 ms 
}); 

चमेली नियमित भी रन और waitsFor साथ अतुल्यकालिक परीक्षण के लिए समर्थन हासिल है, या Jasmine.Async साथ उपयोग कर सकते हैं 'पूर्ण'।

संबंधित मुद्दे