Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未通过VAR的Qunit测试_Javascript_Testing_Qunit - Fatal编程技术网

Javascript 未通过VAR的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(); }

我正在尝试对一个函数进行测试,该函数对表单进行一些非常简单的验证。 但是,如果不向函数传递变量,我就无法理解如何使用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');
我应该只是修改我的功能,还是有办法使用这样的设置

//编辑


我现在选择的选项是在当前函数之上设置另一个函数,该函数只解析表单输入,然后将它们作为变量发送到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输入会很繁琐。您应该能够在不同的测试中测试多个场景,我的更新有意义吗?是的,将您对获取值和验证的关注分开,这样会更容易。是的,将获取值的关注点分开,并进行验证以使其更容易。