У меня есть приложение Vue со следующим кодом ...
var vm = new Vue({
el: '#Workbooks',
components: {
'workbook-list': workbooklist
},
data: {
workbooks: [],
message: '',
loading: true,
error: false
},
mounted: function () {
this.getWorkbooks();
},
methods: {
getWorkbooks: function () {
var that = this;
$.ajax({
type: 'GET',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
url: '/LandingPage/getWorkbooks',
success: function (response) {
var results = JSON.parse(response);
that.workbooks = results.workbooks.workbook;
that.checkResults();
},
error: function (xhr, exception) {
that.loading = false;
that.message = 'Sorry, there was a problem fetching your reports. Please try later.';
that.error = true,
console.log(xhr.status + ' ' + exception);
},
});
},
checkResults: function() {
this.workbooks.length ? this.loading = false : this.message = 'You currently do not have any reports set up.';
}
},
});
Все работает нормально, но я хочу проверить, что при успешном вызове AJAX он работаетчто это должно.
У меня есть следующий код Жасмин, который я запускаю через Карму ...
it('should check the results on Ajax success', function () {
spyOn(vm, "checkResults");
spyOn($, 'ajax').and.callFake(function (e) {
e.success({});
});
vm.getWorkbooks();
expect("checkResults").toHaveBeenCalled();
});
У меня есть две проблемы.Во-первых, я получаю сообщение об ошибке 404 в журналах по URL-адресу AJAX (оно указывает на контроллер ASP.NET MVC, а не на физический файл).Во-вторых, тест завершается неудачно с ' SyntaxError: Неожиданный токен o в JSON в позиции 1 '.Я предполагаю, что это потому, что он просто возвращает объект и пытается проанализировать JSON, который не существует?Пожалуйста, исправьте меня, если я ошибаюсь.
Мой вопрос заключается в том, как мне решить эту проблему и как правильно выполнить модульное тестирование таких вызовов AJAX, поскольку я явно что-то упускаю?По сути, я просто хочу как-то высмеять этот ответ.
Я не знаю, стоит ли также отмечать, что я использую эти инструменты автономно, поэтому я не использую что-либо вроде Webpack для объединения вещей изапустить их.
Большое спасибо за любую помощь.