Как проверить отправку формы в Жасмин? - PullRequest
12 голосов
/ 14 сентября 2011

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

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

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

Спасибо!

Ответы [ 2 ]

38 голосов
/ 07 ноября 2011

Может быть, этот фрагмент кода поможет вам ...

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 голосов
/ 17 марта 2016

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

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