2011-10-06 110 views
1

我想做一个功能测试,为窗体做一些非常简单的验证。 但是我不知道如何使用qunit而不将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()功能的另一功能选项

回答

1

我最终做的是以一种允许我在测试中通过变量的方式修改函数。

之前的代码会做这样的事

 function validateForm(){ 
       var value1 = $('#someinput').val(); 
       //Do some validation based on these vars 
       $('#someform').submit(); 
     } 

现在,当按钮被按下它去分析给ARGS出来我还添加了一个“测试” 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'); 
      ... 
      ... 
     }); 
+0

是的,分开您对获取值和验证的关注使其更容易。 – craigb

0

qUnit是否可以访问表单/ UI?我只使用JsTestDriver进行JavaScript测试,但在那里您只测试内部对象逻辑

因此,不是试图读取表单(我不知道您是否可以这样做),您可以做的是获取从表单中的电流值,并通过那些验证功能,如:

function validate(options){ 

     return options.foo === "bar" 

} 

所以,你可以写不喜欢的东西

var options = {foo:"bar"} 
var valid = validate(options) 
equal(true, valid) 

一qUnit测试

这样的事情?然后,一旦您对该功能感到满意,您可以将其添加到UI中。

+0

现在的测试是从形式上UI分开。我想在一个文件中测试多个场景,我认为通过用户界面输入 – BillPull

+0

会很乏味,您应该可以在不同的测试中使用多个场景,我的更新是否有意义? – TobyEvans