Это мой js файл:
My.File = {
someMethod: function() {
var finalURL = "https://some.url.com"
var somePostCall = $.post(My.URL, {
sessionToken: My.Session.sessionToken
});
somePostCall.done(function(response) {
//do something with the response ===> I want to test this function, and mock the 'response'
});
}
}
Я пытаюсь написать тест, охватывающий функцию, передаваемую в вызове done. Я не хочу совершать фактический вызов ajax, я хочу пометить ответ от http-вызова и все еще хочу получить обещание somePostCall для вызова. И когда метод «done», «response» должен быть смоделирован с чем-то, придуманным мной.
Я пытался получить ответ от вызова $ .post. Например:
spyOn($, 'post').and.callThrough();
My.File.someMethod();
var promise = $.post.calls.mostRecent().args[0];
Проблема в том, что .args [0] не возвращает значение из $ .post, это просто передаваемые параметры. Если я могу подсмотреть ответ от $ .post, то я могу проследить его и перехватить функцию, переданную методу done. Таким образом, я могу, по крайней мере, назвать его вручную и передать поддельный «ответ».
Есть идеи?