Подтвердить что ты не робот

Как проверить форму отправки в Жасмин?

У меня есть форма, которая делает некоторые обширные материалы Javascript, прежде чем, наконец, POSTING к этому ACTION URL. Я пишу некоторые модульные тесты Jasmine и хочу убедиться, что материал Javascript происходит, когда форма отправлена. Тем не менее, я определенно не хочу, чтобы страница переходила на URL-адрес ACTION во время модульного тестирования.

Я увидел то, что показалось мне хорошим предложением: http://groups.google.com/group/jasmine-js/browse_thread/thread/a010eced8db17c1a?pli=1

... но, поскольку я довольно новичок в Jasmine, я не уверен, как его реализовать и не могу найти подходящих примеров в Интернете. У кого-нибудь есть пример кода, который я мог бы посмотреть, что бы выполнить то, что мне нужно?

Спасибо!

4b9b3361

Ответ 1

Возможно, этот фрагмент кода может помочь вам...

it('calls ajax post on export button click', function() {
  view.render();
  var form = $('#export_images_xml_form');
  var submitCallback = jasmine.createSpy().andReturn(false);
  form.submit(submitCallback);

  $('#export_images_xml_button').click();

  expect(form.attr('action')).toEqual('/export');
  expect($('#export_images_xml_form input').attr('value')).toEqual('22,33,44');
  expect(submitCallback).toHaveBeenCalled();
});

То, что я делаю, в основном останавливает каждую отправку для данной формы, возвращая false в связанном обратном вызове (см. поведение submitCallback).

Затем я также могу проверить обратный вызов...

Надеюсь, что это поможет!

Ответ 2

Если вы не хотите проверять, что вызов submit был вызван, вам не нужно создавать шпиона. С помощью простого jQuery вы также можете добиться эффекта не отправки формы. Я помещаю следующий код вне всех тестов, таким образом, он применяется ко всем тестам в файле.

$('form').on('submit', function() {
    return false;
});