Смоделируйте вызовы на сервер с помощью jasmine

Я хотел бы смоделировать вызовы ajax на сервер с помощью jasmine, а также проверить выполненный и неудавшийся отложенный объект.

В настоящее время я делаю их по-настоящему, таким образом пытаясь отправить кучу вызовов на сервер.

Как мне исправить следующий код, чтобы

mySpy = spyOn(backendController, 'submitForm').andCallThrough(); 
// it makes a real call to the server

mySpy = spyOn(backendController, 'submitForm'); 
// it does not make a real call to the server but I get the following error
// Cannot call method 'done' of undefined

Вот код о doSubmitForm

doSubmitForm: function (backendController) {
  backendController.submitForm(message.val())
        .done(this.onSuccess)
        .fail(this.onError);
});

person Lorraine Bernard    schedule 13.09.2012    source источник
comment
Чтобы это работало, ваша «submitForm» должна возвращать отложенный объект jQuery (например, jqXHR и т. д.)?   -  person Karthik    schedule 13.09.2012
comment
@Картик, я полагаю, да, есть идеи, как это сделать?   -  person Lorraine Bernard    schedule 13.09.2012
comment
вы, вероятно, могли бы использовать «andCallFake» и заставить его возвращать объект, отложенный jquery. Публикация его как ответ ниже.   -  person Karthik    schedule 14.09.2012


Ответы (1)


В случае сбоя я думаю, что проблема связана с тем, что вызов не возвращает объект jQuery-Deferred.

Чтобы проверить эту теорию, вы, вероятно, могли бы попробовать что-то вроде этого:

var tmpDefObj = $.Deferred();

spyOn(backendController, 'submitForm').andCallFake(function() {return tmpDefObj;});
person Karthik    schedule 13.09.2012
comment
спасибо за ваше предложение. это работает .. кстати на самом деле у меня есть другая проблема, связанная с этим. Как проверить выполненное и провалить отложенное Объект с использованием жасмина. Есть идеи, как это исправить? - person Lorraine Bernard; 14.09.2012
comment
Конечно. Я рассмотрю ваш другой вопрос позже сегодня. - person Karthik; 14.09.2012