Я пытаюсь смоделировать XMLHttpRequest в модульном тесте, используя jasmine-ajax. Я использовал Aurelia CLI для генерации своего приложения, и я использую Karma в качестве модульного тестера.
Для модульного теста я попытался импортировать jasmine-ajax:
import * as jasmine from 'jasmine-ajax';
describe('when calling the API', () => {
beforeEach(() => {
jasmine.Ajax.install();
});
afterEach(() => {
jasmine.Ajax.uninstall();
});
it('then it should get an answer back', () => {
var doneFn = jasmine.createSpy("success");
var xhr= new XMLHttpRequest();
xhr.onreadystatechange = function(args) {
if(this.readyState == this.DONE) {
doneFn(this.responseText);
}
};
xhr.open("GET", "https://someaddress.net/api/plans");
xhr.send();
expect(jasmine.Ajax.requests.mostRecent().url).toBe("https://someaddress.net/api/plans");
expect(doneFn).not.toHaveBeenCalled();
jasmine.Ajax.requests.mostRecent().respondWith({
"status":200,
"contentType": 'text/plain',
"responseText": 'awesome response'
});
expect(doneFn).toHaveBeenCalledWith('awesome response');
});
});
При запуске теста с Кармой я получаю:
TypeError: jasmine_ajax__WEBPACK_IMPORTED_MODULE_0 __. Jasmine is
undefined в строке test / karma-bundle.js 3146> eval (строка 7)
Я обнаружил, что есть определение типа для jasmine-ajax, которое я установил с
npm i @ types / jasmine-ajax
Затем я удалил оператор импорта jasmine-ajax. Это привело к следующей ошибке:
TypeError: jasmine.Ajax не определен в строке test / karma-bundle.js 3134> eval (строка 3)
Так что я делаю неправильно?
Я использую jasmine 3.3.9, jasmine-ajax 3.4.0, karma 4.0.1, машинопись 2.9.2 и webpack 4.4.25,