Javascript 如何在Jasmine中测试表单提交?
我有一个表单,在最终发布到它的动作URL之前,它会执行一些广泛的Javascript内容。我正在编写一些Jasmine单元测试,并希望确保在提交表单时发生Javascript内容。但是,在进行单元测试时,我绝对不希望页面转到操作URL 我在这里看到了一个很好的建议: …但是,由于我对Jasmine还比较陌生,我不确定如何实现它,也无法在web上找到任何相关的示例。有没有人有一些我可以看的示例代码可以完成我需要的Javascript 如何在Jasmine中测试表单提交?,javascript,unit-testing,jasmine,form-submit,Javascript,Unit Testing,Jasmine,Form Submit,我有一个表单,在最终发布到它的动作URL之前,它会执行一些广泛的Javascript内容。我正在编写一些Jasmine单元测试,并希望确保在提交表单时发生Javascript内容。但是,在进行单元测试时,我绝对不希望页面转到操作URL 我在这里看到了一个很好的建议: …但是,由于我对Jasmine还比较陌生,我不确定如何实现它,也无法在web上找到任何相关的示例。有没有人有一些我可以看的示例代码可以完成我需要的 谢谢 也许这个代码片段可以帮助您 it('calls ajax post on e
谢谢 也许这个代码片段可以帮助您
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行为)
然后我还可以测试回调是否被调用
希望有帮助 如果不想测试调用了
submit
,则不需要创建间谍。使用普通jQuery,还可以达到不提交表单的效果。我将以下代码放在所有测试之外,这样它将应用于文件中的所有测试
$('form').on('submit', function() {
return false;
});
如果没有被接受的答案,我可以自动接受20票或以上的答案吗?:)不确定这是否是版本问题,但必须为我执行以下操作
jasmine.createSpy().and.returnValue(false)
@peekabo,我得到“找不到变量视图”@我们需要为这些元素创建固定装置吗?我没有定义或不知道。我还想知道如何使用这个测试的装置,想知道你是否使用jasmine查询?view.render()在哪里;来自?我在表单标签中添加了onsubmit=“return false”