Javascript 未通过VAR的Qunit测试
我正在尝试对一个函数进行测试,该函数对表单进行一些非常简单的验证。 但是,如果不向函数传递变量,我就无法理解如何使用qunit。 这是我所说的一个例子Javascript 未通过VAR的Qunit测试,javascript,testing,qunit,Javascript,Testing,Qunit,我正在尝试对一个函数进行测试,该函数对表单进行一些非常简单的验证。 但是,如果不向函数传递变量,我就无法理解如何使用qunit。 这是我所说的一个例子 function validateForm(){ var name = $('#name').val(); var submit = true; //do some validation //if submit true form.submit(); }
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');
我应该只是修改我的功能,还是有办法使用这样的设置
//编辑
我现在选择的选项是在当前函数之上设置另一个函数,该函数只解析表单输入,然后将它们作为变量发送到validateForm()函数qUnit是否有权访问表单/UI?我只使用JsTestDriver进行JavaScript测试,但这里只测试内部对象逻辑 因此,与其尝试读取表单(我不知道是否可以),不如从表单中获取当前值,并将其传递给验证函数,例如:
function validate(options){
return options.foo === "bar"
}
因此,您可以编写一个qUnit测试,它可以执行以下操作
var options = {foo:"bar"}
var valid = validate(options)
equal(true, valid)
或
像这样的?然后,一旦您对该功能满意,就可以将其添加到UI中
??qUnit是否有权访问表单/UI?我只使用JsTestDriver进行JavaScript测试,但这里只测试内部对象逻辑 因此,与其尝试读取表单(我不知道是否可以),不如从表单中获取当前值,并将其传递给验证函数,例如:
function validate(options){
return options.foo === "bar"
}
因此,您可以编写一个qUnit测试,它可以执行以下操作
var options = {foo:"bar"}
var valid = validate(options)
equal(true, valid)
或
像这样的?然后,一旦您对该功能满意,就可以将其添加到UI中
?我最终做的是修改函数,使我能够通过测试中的VAR 在代码执行类似操作之前
function validateForm(){
var value1 = $('#someinput').val();
//Do some validation based on these vars
$('#someform').submit();
}
var testFn = true;
test('validateForm()', function(){
equals(validateForm('ExampleVal1','ExampleVal2',testFn), false, 'Such and Such Values should not validate');
...
...
});
现在,当按下submit按钮时,它将转到另一个函数,该函数为我解析参数,还添加了一个“test”参数,以便在测试期间不提交表单
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看起来像这样
function validateForm(){
var value1 = $('#someinput').val();
//Do some validation based on these vars
$('#someform').submit();
}
var testFn = true;
test('validateForm()', function(){
equals(validateForm('ExampleVal1','ExampleVal2',testFn), false, 'Such and Such Values should not validate');
...
...
});
我最终做的是以一种允许我在测试中通过VAR的方式修改函数 在代码执行类似操作之前
function validateForm(){
var value1 = $('#someinput').val();
//Do some validation based on these vars
$('#someform').submit();
}
var testFn = true;
test('validateForm()', function(){
equals(validateForm('ExampleVal1','ExampleVal2',testFn), false, 'Such and Such Values should not validate');
...
...
});
现在,当按下submit按钮时,它将转到另一个函数,该函数为我解析参数,还添加了一个“test”参数,以便在测试期间不提交表单
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看起来像这样
function validateForm(){
var value1 = $('#someinput').val();
//Do some validation based on these vars
$('#someform').submit();
}
var testFn = true;
test('validateForm()', function(){
equals(validateForm('ExampleVal1','ExampleVal2',testFn), false, 'Such and Such Values should not validate');
...
...
});
现在,测试与表单UI是分开的。我想在一个文件中测试多个场景,我认为通过UI输入会很繁琐。你应该能够在不同的测试中有多个场景,我的更新有意义吗?现在测试与表单UI是分开的。我想在一个文件中测试多个场景,我认为通过UI输入会很繁琐。您应该能够在不同的测试中测试多个场景,我的更新有意义吗?是的,将您对获取值和验证的关注分开,这样会更容易。是的,将获取值的关注点分开,并进行验证以使其更容易。