如何在Jasmine中测试表单提交?

gcd*_*dev 12 javascript unit-testing form-submit jasmine

我有一个表单,在最终POST到它的ACTION URL之前做了一些广泛的Javascript工作.我正在编写一些Jasmine单元测试,并希望确保在提交表单时发生Javascript事件.但是,在单元测试时,我绝对不希望页面转到ACTION URL.

我在这里看到了一个好的建议:http: //groups.google.com/group/jasmine-js/browse_thread/thread/a010eced8db17c1a?pli = 1

...但是,由于我对Jasmine相当新,我不确定如何实现它,并且无法在网上找到任何相关的例子.有没有人有一些我能看到的示例代码可以完成我需要的东西?

谢谢!

小智 40

也许这段代码片段可以帮助你......

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();
});
Run Code Online (Sandbox Code Playgroud)

我所做的基本上是停止给定表单的每个提交在相关的回调中返回false(请参阅submitCallback行为).

然后我也可以测试回调已被调用...

希望能帮助到你!

  • 不确定这是否是一个版本问题但是必须为我做以下事情`jasmine.createSpy().and.returnValue(false)` (3认同)