2017-07-25 9 views
1

こんにちは、 現在Qunit TestingフレームワークでJavaScriptコードをテストしています。私はQUnit.test関数で自分のQUnit.module設定変数にアクセスすることができません。Qunitモジュールの設定変数へのアクセス

QUnit.module("Module A:Build Notes",{ 
    setup: function() { 
     this.inputsticky = $("input[name=stickyinput]"); 
    } 
}); 
QUnit.test("Test Case 1",function (assert) { 
    assert.expect(1);    
    orangeClick(); //changing color              
    assert.equal(this.inputsticky.css('background-color'),'rgb(255, 165, 0)', "orange Function passed !"); 
}); 

結果: this.inputstickyは、あなただけのHTML要素上に保持したい場合は、完全にモジュールの外部変数を作成することができ、コメントごと

+0

動作しません。つまり、QUnitはそのように動作しません。しかし、もっと重要なのは、テストで要素を選択するのと比べて、なぜそれをやっているのですか? – jakerella

+0

@ jakerella多くのテストケースでその入力要素を使用する必要があります。だから私はいくつかの冗長性を減らすために、変数(this.inputsticky)に要素を格納し、必要に応じて同じものを呼び出します。 –

+0

ええ...しかし、QUnitは 'this'でこのように動作しません。代わりに、変数をモジュールの外に定義することができます。 – jakerella

答えて

0

定義されていません。 thisが本当に(私が知っている)仕事に行くされていない使用:

(function() { 
    // put things in an IIFE to prevent data leakage 

    let inputElement; // define the variable at a higher scope 

    QUnit.module("Module A:Build Notes",{ 
    setup: function() { 
     // now we can set the variable's value for use in all later tests 
     inputElement = $("input[name=stickyinput]"); 
    } 
    }); 
    QUnit.test("Test Case 1",function (assert) { 
    assert.expect(1);    
    orangeClick(); //changing color              
    assert.equal(inputElement.css('background-color'),'rgb(255, 165, 0)', "orange Function passed !"); 
    }); 

})(); 
+0

こんにちはJakerellaの回答を追加します。 私のqunitファイルメイトに同じものを実装しました。まだそれは動作しません。しばらく時間があれば、私のコードを見てください。私は以下の私のgithubのリンクを更新しました: https://github.com/haripery/unitTest_JS_Qunit –

+0

それがうまくいかない場合、問題は要素を選択することではありません。 '.css()'呼び出しの値をログアウトしてみてください。 – jakerella

+1

こんにちはjakeralla、 私はあなたのアイデアをbeforeEachとセットアップを置き換え、今それは最終的に動作します。ありがとう。 –

0
(function() { 


    var inputElement; // define the variable at a higher scope 

    QUnit.module("Module A:Build Notes",{ 
    beforeEach: function() { 
     // now we can set the variable's value for use in all later tests 
     inputSticky = $("input[name=stickyinput]"); 
    } 
    }); 
    QUnit.test("Test Case 1",function (assert) { 
    assert.expect(1);    
    orangeClick(); //changing color              
    assert.equal(inputSticky.css('background-color'),'rgb(255, 165, 0)', "orange Function passed !"); 
    }); 

})(); 
+0

Qunitは次のようにセットアップを置き換えました。 before(機能)最初のテストの前に実行されます。 beforeEach(関数)各テストの前に実行されます。 afterEach(関数)各テストの後に実行されます。 after(関数)最後のテストの後に実行されます。 –

関連する問題