1

我正在尝试对一个对表单进行一些非常简单验证的函数进行测试。但是,如果不将 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');

我应该只修改我的功能还是有办法使用这样的设置。

//编辑

我现在选择追求的选项是在当前函数之上设置另一个函数,它只是解析表单输入,然后将它们作为 vars 发送到 validateForm() 函数

4

2 回答 2

1

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

在代码会做这样的事情之前

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

现在,当按下提交按钮时,它会转到另一个为我解析参数的函数,还添加了一个“测试”参数,因此在测试期间不会提交表单。

     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');
           ...
           ...
       });
于 2011-10-12T16:23:16.173 回答
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 中

??

于 2011-10-06T16:20:08.850 回答