достаточно простой вопроса:Использование Sinon.js и предотвращение вызова на мой сервер приложений
Я хочу, чтобы проверить sinon.js куска JavaScript, чтобы убедиться, что он вызывает метод $.ajax
, делая две вещи:
- Я не хочу, чтобы на самом деле попал серверу
- Я хочу, чтобы импровизировать ответ от сервера
так вот JS:
$.ajax
url: "/tickets/id.json"
dataType: 'json'
.done (data) =>
HandlebarsTemplates["tickets/popup_title"] data
и вот мой тест:
describe 'PopupDisplayer', ->
beforeEach ->
loadFixtures 'popup_displayer'
new PopupDisplayer
@title_stub = sinon.stub(HandlebarsTemplates, "tickets/popup_title")
@jquery_stub = sinon.stub(jQuery, 'ajax').yieldsTo('done', {})
//This triggers the ajax call
$('.popupable .title').mouseenter()
afterEach ->
HandlebarsTemplates['tickets/popup_title'].restore()
HandlebarsTemplates['tickets/popup_content'].restore()
jQuery.ajax.restore()
@server.restore()
it 'renders the title with the data returned from the server', ->
expect(@title_stub).toHaveBeenCalledWith({})
Этот тест не хотя со следующими исключениями:
TypeError: ajax expected to yield to 'done', but no object with such a property was passed. Received [[object Object]]
Так что я думаю, я задаюсь вопросом, могу ли я макет запрос Jquery к получите ответ, который может успешно ответить на звонок .done
, по-видимому, я недостаточно понимаю defferedObject()
.
Пожалуйста [не добавляют подписей или подписчиков на ваши сообщения] (http://stackoverflow.com/faq#signatures). Кроме того, вместо использования '
' для встроенного кода вы должны использовать '' 'backticks \' '. – meagar