2016-03-21 5 views
4

Ich versuche, die Ajax-Fehleranforderung zu erkennen und den folgenden Fehler zu bekommen. Kannst du mir dabei helfen?Jasmin - Ajax Spion die Fehleranforderung

Typeerror: e.error ist keine Funktion

JS-Code getestet werden:

function postSettings() { 

     $.ajax(
      { 
       type: "POST", 
       url: EndPoints.Setup, 
       data: frm_data, 
       success: function (successData) { 
         ///// code is getting covered 
       }, 
       error: function (errorData) { 
         ///// code is not getting covered 
       } 
      }); 
    } 

Jasmin spec:

describe("Call Success path", function() { 
      var ajaxSpy; 
      beforeEach(function() { 
       var MockEndPoints = global.EndPoints = {}; 
       MockEndPoints.SnmpSetup = "/mock/test/setup"; 
       ajaxSpy = spyOn($, "ajax").and.callFake(function (e) { 
        e.success(globalFakeData); 
       }); 
      }); 

      it("Should populate settings", function() { 
       Setup.postSettings(); 
       expect($.ajax).toHaveBeenCalledTimes(2); 
      }); 

     }); 

     describe("Call Error path", function() { 
      var ajaxSpy; 
      beforeEach(function() { 
       var MockEndPoints = global.EndPoints = {}; 
       MockEndPoints.SnmpSetup = "/mock/test/setup"; 
       ajaxSpy = spyOn($, "ajax").and.callFake(function (e) { 
        **e.error; // No error but the path is not covered** 
        **e.error(globalFakeData); // throws the above error** 
       }); 
      }); 

      it("Should populate settings", function() { 
       Setup.postSettings(); 
       expect($.ajax).toHaveBeenCalledTimes(1); 
      }); 
     }); 

Dank.

Antwort

3

Ich würde dringend vorschlagen, nicht zu versuchen,/Stub $.ajax Methoden direkt, und verwenden Sie stattdessen die jasmine-ajax Bibliothek.

  • In einem beforeEach tun: jasmine.Ajax.install().

  • Führen Sie Ihren Testcode aus, und Sie können überprüfen, ob die Ajax-Anforderung mit var request = jasmine.Ajax.requests.mostRecent() gestellt (und abgefangen) wurde. Sie können anschließend die Anforderungseigenschaften wie , method, data() überprüfen.

  • Um die erfolgreiche und fehlgeschlagene Anforderung zu simulieren, verwenden Sie request.respondWith und übergeben Sie status Codes und responseText Körper. Ein 200-Status simuliert den Erfolg; Der Bereich 4xx oder 5xx wird den Fehlerpfad durchlaufen. Sie können dann Ihre success und error Funktionen das Richtige tun.

Verwandte Themen