2010-02-16 14 views
5

मैं जावास्क्रिप्ट मजाक पुस्तकालय के रूप में जैक का उपयोग कर रहा का उपयोग कर। http://github.com/keronsen/jack। मैं कुनिट का भी उपयोग कर रहा हूं।अजाक्स इकाई परीक्षण मजाक जैक

मैं अपने जावास्क्रिप्ट कोड में AJAX कॉल जो मैं के लिए परीक्षण लिखने के लिए tring हूँ निम्नलिखित है।

$.ajax({ 
    url: $('#advance_search_form').attr('action'), 
    type: 'post', 
    dataType: 'json', 
    data: parameterizedData, 
    success: function(json) { 
     APP.actOnResult.successCallback(json); 
    } 
}); 

निम्नलिखित कोड काम कर रहा है।

jack(function() { 
    jack.expect('$.ajax').exactly('1 time'); 
} 

हालांकि मैं परीक्षण करना चाहता हूं कि सभी तर्क सही तरीके से सबमिट किए गए हैं या नहीं। मैंने पीछा करने की कोशिश की लेकिन काम नहीं किया।

jack.expect('$.ajax').exactly('1 time').whereArgument(0).is(function(){ 

var args = तर्क; ठीक है ('http://localhost:3000/users', args.url, 'URL मान्य होना चाहिए'); // ऑब्जेक्ट } की कई कुंजियों के लिए सिमिलरी परीक्षण);

मैं तर्क की पकड़ पाने के लिए इतना है कि मैं परीक्षण की एक बैटरी प्रदर्शन कर सकता है चाहता हूँ।

उत्तर

4

दो दृष्टिकोण:

उपयोग .hasProperties():

jack.expect('$.ajax').once() 
    .whereArgument(0).hasProperties({ 
     'type': 'post', 
     'url': 'http://localhost:3000/users' 
    }); 

... या तर्क को पकड़ने और बनाने qunit दावे:

var ajaxArgs; 
jack.expect('$.ajax').once().mock(function() { ajaxArgs = arguments[0]; }); 
// ... the code that triggers .ajax() 
equals('http://localhost:3000/users', ajaxArgs.url); 

पहले संस्करण के और अधिक का उपयोग करता है जैक एपीआई (जो बेहतर दस्तावेज़ीकरण के योग्य है), और अधिक पठनीय, आईएमओ है।

बाद के संस्करण आप ज्यादा बेहतर त्रुटि की सूचना दे देंगे।

+0

भयानक। त्वरित देखो के लिए धन्यवाद। –

+0

जैक के पढ़ने के लिए दोनों दृष्टिकोण जोड़ने के लिए दो मिनट लगें। जैक के साथ एक बार फिर अच्छी नौकरी। मुझे यह पसंद है। –

+0

पहला दृष्टिकोण काम कर रहा है। दूसरा दृष्टिकोण असफल रहा है। दोनों तर्क और तर्क [0] अपरिभाषित के रूप में रिपोर्ट कर रहे हैं। –

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