我正在尝试对一个对表单进行一些非常简单的验证的函数进行测试。 但是我无法弄清楚如何在不将vars传递给函数的情况下使用qunit。 这是我所谈论的一个例子
function validateForm(){
var name = $('#name').val();
var submit = true;
//do some validation
//if submit true
form.submit();
}
我在文档中看到的qunit的所有例子都是这样的
ok(validateForm('hello'),'Hello is a valid name');
我应该只修改我的功能还是有办法使用这样的设置。
// EDIT
我现在选择的选项是在当前的一个上面设置另一个函数,它只是解析表单输入,然后将它们作为变量发送到validateForm()函数
答案 0 :(得分:1)
我最终做的是以允许我在测试中传递变量的方式修改函数。
在代码执行此类操作之前
function validateForm(){
var value1 = $('#someinput').val();
//Do some validation based on these vars
$('#someform').submit();
}
现在当按下提交按钮时,它转到另一个为我解析args的函数,还添加了一个'test'arg,因此在测试期间没有提交表单。
function parseFormArgs(){
var value1 = $('#someinput').val();
var value2 = $('#otherinput').val();
var test = false;
validateForm(value1,value2,test);
}
function validateForm(value1,value2,test){
var submit = true;
//Do some validation
if( test != true && submit ){
$('#someform').submit();
}
return submit;
}
然后我的qunit看起来像这样
var testFn = true;
test('validateForm()', function(){
equals(validateForm('ExampleVal1','ExampleVal2',testFn), false, 'Such and Such Values should not validate');
...
...
});
答案 1 :(得分:0)
qUnit是否可以访问表单/ UI?我只使用JsTestDriver进行JavaScript测试,但是你只测试内部对象逻辑
因此,您不必尝试阅读表单(我不知道您是否可以这样做),您可以做的是从表单中获取当前值,并将其传递给验证函数,例如:
function validate(options){
return options.foo === "bar"
}
所以,你可以写一个类似
的qUnit测试var options = {foo:"bar"}
var valid = validate(options)
equal(true, valid)
或
var options = {foo:"booboo"}
var valid = validate(options)
equal(false, valid)
这样的事情?然后,一旦您对该功能感到满意,就可以将其添加到UI 中
...