Как проверить с жасмином почтовый звонок?

Я пытаюсь протестировать функцию с jasmine на javascript, но у меня проблема: я не нашел никакой информации для тестирования функции $.post или $.get, потому что я использую done ($. deferred), который является асинхронным, не знаю, как с этим справиться. Код следующий

function registrarUsuario(cel, eMail, nombre){
$.post(url, {
       phone_number : cel,
       email : eMail,
       name : nombre
       }).done(exitoso(data))} 

Вопрос в том, как мне протестировать функцию $.post или $.get с помощью jasmine и использовать готовую функцию jqXHR.

Функция exitoso(data) выглядит следующим образом:

function exitoso(data){
navigator.notification.alert('User register',
                             alertDismmissed(nombre, eMail, cel),
                             'Sucess');}

Причина, по которой у меня была ошибка с данными ErrorReference, но мне пришлось изменить код $.post(...).done следующим образом

.done(function(data){
 exitoso(data);
}

или также может работать как: .done(exitoso);

Спасибо Андреасу Кёберле за ответ.


person Carlos Duque Yemail    schedule 17.06.2013    source источник


Ответы (1)


Таким образом, вы можете следить за $.post и возвращать разрешенное отложенное:

var dfr = new $.Deferred();
dfr.resolve({data: "data"})
jasmine.spyOn($, 'post').andReturn(dfr)
registrarUsuario()

Другим решением является использование fakeServer sinonJs:

this.server = sinon.fakeServer.create();
this.server.respondWith('{data: "data"}');
server.autoRespond = true;
registrarUsuario()
person Andreas Köberle    schedule 17.06.2013
comment
Использование jasmine показывает следующее: ошибка ReferenceError: данные не определены, знаете ли вы, что можно сделать? возможно, используя callFake, я пробовал использовать spyOn('data') и другие вещи, чтобы переменная не воспринималась как нулевая. - person Carlos Duque Yemail; 18.06.2013
comment
Вы должны шпионить за exitoso, чтобы убедиться, что он был вызван с помощью exitoso. Может быть, вы публикуете больше своего кода, трудно догадаться, что такое exitoso и как его шпионить на вашем примере. - person Andreas Köberle; 18.06.2013
comment
Андреас, спасибо за ваше время, я добавил весь код, который использую. Я знаю, что exitoso не вызывается, потому что он застревает на data referenceError - person Carlos Duque Yemail; 18.06.2013
comment
Извините, я нашел ошибку, я исправлю свой вопрос, спасибо, кстати, я дал вам точку! это было из-за того, как вызывалась функция. - person Carlos Duque Yemail; 18.06.2013
comment
Ах, хорошо, проблема в том, что вы вызываете done(exitoso(data)), я думаю, что на самом деле нужно выполнить функцию exitoso при успешном вызове ajax: done(exitoso) - person Andreas Köberle; 18.06.2013