Я написал модульный тест для функции, которая вызывает метод jQuery getJSON
.Единственное, что я тестирую, это то, что он вызывается с ожидаемым URL.Мой модульный тест использует Jasmine Spy для насмешки вызова API.Однако, когда я запускаю свои модульные тесты, я получаю эту ошибку:
1) should make a request to the expected URL when running on localhost
test module getDataFromApi function
TypeError: Cannot read property 'fail' of undefined
В моем модульном тесте я создал Jasmine Spy, который возвращает методы done
и fail
.Что я здесь не так делаю?
Вот мой модульный тест:
describe('getFundDataFromApi function', function () {
beforeEach(function () {
spyOn($, "getJSON").and.callFake(function () {
return {
done: function () {},
fail: function () {}
};
});
});
it('should make a request to the expected URL when running on localhost', function () {
var expectedUrl = '/assets/mock-data/mock-data.json';
module.getDataFromApi();
expect($.getJSON).toHaveBeenCalled();
expect($.getJSON).toHaveBeenCalledWith({url:expectedUrl});
});
});
Функция, которую я пытаюсь проверить: getDataFromApi
getDataFromApi: function () {
var mod = this;
var url = this.settings.apiUrl;
$.getJSON({
url: url
})
.done(function (data) {
mod.processApiData(data);
})
.fail(function () {
mod.displayErrorMessage();
});
},