что я использую mocha + sinonjs для модульного тестирования. До сих пор это работало хорошо, но теперь я пытаюсь запустить модульный тест, который должен дать xml-ответ на ajax-запрос. Это работает вплоть до того момента, когда я хочу запросить объект request.responseXML, который всегда имеет значение null, несмотря на то, что Sinon передал все необходимые параметры для анализа xml. Я добавил небольшой основанный на машинописи модульный тест, чтобы показать проблему.
describe('Sinon XML Problem', function () {
it("must work with xml", function () {
let FakeXMLHTTPequest = sinon.useFakeXMLHttpRequest();
var requests = this.requests = [];
FakeXMLHTTPequest.onCreate = function (xhr) {
requests.push(xhr);
};
let xhr: any = new FakeXMLHTTPequest();
requests[0].responseType = 'document';
requests[0].open('GET', '/xmlhttprequest/xml', false);
requests[0].onreadystatechange = function () {
if (requests[0].readyState == 4) {
expect(requests[0].responseXML != null).to.be.true;
}
};
requests[0].send();
requests[0].respond(200, {'Content-Type': 'text/xml'}, `
<?xml version="1.0" encoding="utf-8"?>
<partial-response>
<changes>
<update id="value_1"><![CDATA[<span id="out1">2</span>]]></update>
<update id="javax.faces.ViewState"><![CDATA[j_id1:j_id3]]></update>
</changes>
</partial-response>
`);
})
});
результат запросов [0] .responseXML должен быть чем угодно, но не нулевым, но тест терпит неудачу с нулем в responseXML. Кто-нибудь знает почему?