2012-02-21 13 views
10

मैं इस के लिए एक QUnit परीक्षण लिख सकते हैं संशोधित किए बिना ajax कॉल परीक्षण करने के लिए कैसे:QUnit: ajax कॉल

function doSomethingWithAjax() { 
    $.ajax({ 
     url: '/GetHelloWorld', 
     success: function(data) { $("#responseFromServer").text(data); }, 
    }); 
} 

Mockjax + qunit ajax में एक शुरुआत() कॉल पूरा() विधि की आवश्यकता है।

उत्तर

15
test("should mock ajax", function() { 

    $.ajax = function(options) { 
     equals(options.url, "/GetHelloWorld"); 
     options.success("Hello"); 
    }; 

    doSomethingWithAjax(); 

    equal($("#responseFromServer").text(), "Hello"); 
}); 
1

jasmine-ajax लाइब्रेरी आपको कॉल को छूए बिना सभी AJAX कॉल के लिए नकली प्रतिक्रियाओं को परिभाषित करने की अनुमति देता है।

+0

कोशिश कर सकते हैं? –

0

इस प्रश्न में कुछ सालों हैं और jQuery और जैस्मीन के नए संस्करणों में थोड़ा बदलाव आया है।

आप चमेली-ajax का उपयोग नहीं करना चाहते हैं तो आप आप ओपी के सवाल जैस्मिन-ajax का उपयोग कर के लिए एक समाधान साझा कर सकते हैं Michael Falaga's approach

function ajax_response(response) { 
    var deferred = $.Deferred().resolve(response); 
    return deferred.promise(); 
    } 

    describe("Test test", function() { 
    beforeEach(function() { 
     spyOn($, 'ajax').and.returnValue(
     ajax_response([1, 2, 3]) 
    ); 
    }); 
    it("is it [1, 2, 3]", function() { 
     var response; 
     $.ajax('GET', 'some/url/i/fancy').done(function(data) { 
     response = data; 
     }); 
     expect(response).toEqual([1, 2, 3]); 
    }); 
    });