Как издеваться над getElementByClassName в responseText of AJAX error в Jasmine - PullRequest
0 голосов
/ 05 мая 2020

У меня есть код AJAX:


function save(saveButton) {
    var data = $("#someForm").serialize();
    var url = $("#saveUrl").attr("href");
    $.ajax({
        type : "POST",
        data : data,
        url : url,
        dataType : "json",
        timeout : 600,
        error : function(e){
            exceptionResponse(e);
        }
    });
}

function exceptionResponse(response) {
    var responseText = response.responseText;
    var parser=new DOMParser();
    var xmlDoc=parser.parseFromString(responseText,"text/html");
    var error = xmlDoc.getElementsByClassName("error-title")[0].innerHTML;
    var errorMsg = xmlDoc.getElementsByClassName("error-message")[0].innerHTML;
    var errorTrace = xmlDoc.getElementsByClassName("error-trace")[0].innerHTML;
    // Then some code to display this error, errorMsg and errorTrace on the webpage
}

Я хочу написать модульный тест для того же самого в среде тестирования JS Jasmine для, скажем, кода ошибки 500 Internal ServerError. Как издеваться над getElementByClassName, которое мы анализируем из responseText с помощью парсера DOM? Пока что я написал следующий тест JS:

describe("Error Test", function() {
    beforeEach(function() {
              jasmine.Ajax.install();
              // code to call the AJAX function. 
});


    afterEach(function() {
      jasmine.Ajax.uninstall();
    });

it("ajax error response", function(done){

 const errorResponse = {
          //error code
          status: 500,
          responseText: "some error"
}

var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(errorResponse);
done()
});
});

Я получаю сообщение об ошибке TypeError: null is not an object (evaluating 'xmlDoc.getElementsByClassName') in file ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...