Мокое XMLHttpRequest с использованием jasmine-ajax дает jasmine.ajax = undefined - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь смоделировать 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,

1 Ответ

0 голосов
/ 18 марта 2019

После установки karma-jasmine-ajax (https://github.com/IDCubed/karma-jasmine-ajax) и добавления 'jasmine-ajax' в массив frameworks в karma.conf.js он начал работать.

module.exports = function(config) {
  config.set({
    frameworks: ['jasmine-ajax', 'jasmine']
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...