javascript - अजाक्स परीक्षण कोड फेंक त्रुटि



ajax jasmine (1)

मैं चमेली का उपयोग कर एक कोड का परीक्षण कर रहा हूं और एजेक्स विधि के लिए नकली वस्तु का निर्माण कर रहा हूं

spyOn($,'ajax').and.callFake(function(e){
console.log("is hitting");
})

कोड के निम्नलिखित टुकड़े की जांच करने के लिए

$.ajax({
               url: AppManager.defaults.contextPath + "/solutions/mcn/mcn-lookup-list",
               data: {
                    mcnNumber       : mcnNumberData,
                    mcnCustomerName : mcnCustomerNameData
               },
               dataType: "json",
               type: "GET",
               global: false
        })
        .done(function(data) {
               solution.CommonObjects.theSolution.orderHandoff.mcnSearchData = self.filterMCNSearchData(data, resultObj);
               $promise.resolve();
        })
        .fail(function() {
             $promise.reject();
             self.displayErrorPopup('MCN Search Error','There is no MCN associated with MCN Number or MCN Customer Name Entered!!!');
        });
    },

यह एक त्रुटि फेंक रहा है जो अनिर्धारित नहीं किया जा सकता है क्या मुझे इसके लिए एक जासूस बनाने की आवश्यकता है? ऐसा करने के लिए कृपया कोड के साथ मदद करें


आपके कोड के साथ समस्याएं:

  • आप इसे सही पर जासूसी कर रहे हैं लेकिन आपको अपने जासूस के माध्यम से एक promise वस्तु को वापस भेजने की आवश्यकता है। मूल रूप से आपको इस तरह कुछ वापस करने की ज़रूरत है ==> return new $.Deferred().resolve(dummyData).promise();
  • एक deferred object/promise object बनाने के कई तरीके हैं मैं आपको सुझाव देता हूं कि आप दोनों Promise और Deferred
  • इसके अलावा क्या आप ये बता सकते हैं कि आपका $promise कहां से आ रहा है? यह कुछ require.js सुविधा है?

नीचे एक अजाक्स कॉल नकली करने का एक तरीका है।

var testObj = {
    ajaxFunction: function() {
      $.ajax({
        url: 'https://jsonplaceholder.typicode.com/posts/1'
      }).done(function(data){
        consoleLogFunction(data);
      });
    }
};

var consoleLogFunction = function(data){
    console.log("The lengh of array is..=> "+ data.length);
};

describe("ajax test suite", function() {
  it("expect true to be true", function() {
    var dummyData = ["Foo", "Boo"];
    spyOn($, 'ajax').and.callFake(function(e){
      return new $.Deferred().resolve(dummyData).promise();
    });
    spyOn(window, 'consoleLogFunction').and.callThrough();
    testObj.ajaxFunction();
    expect(window.consoleLogFunction).toHaveBeenCalledWith(dummyData);
  });
});




jasmine