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');

関数を変更するだけですか、それともそのような設定で作業する方法がありますか。

//編集

私が今追求することを選択したオプションは、フォーム入力を解析し、それらを変数として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にアクセスできますか?JavaScriptのテストにはJsTestDriverのみを使用しましたが、内部オブジェクトロジックのみをテストします。

したがって、フォームを読み取ろうとする代わりに(実行できるかどうかはわかりません)、フォームから現在の値を取得し、それらを検証関数に渡すことができます。例:

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 に答える