Qunit测试没有通过Vars

时间:2011-10-06 16:13:12

标签: javascript testing 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()函数

2 个答案:

答案 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

...