LoginSignup
1
1

More than 5 years have passed since last update.

QUnit 可変エリアの初期化

Last updated at Posted at 2014-12-04

qunit-fixtureを指定することで、そのエリア内を初期化することができる。
初期化は1テストケース毎となる。

次の例のようにボタンをクリックするたびに要素を追加していくような処理があるとき、
テストケースではタイミングが「初回」か「継続」かで期待値が異なる。

$(function() {
  $('#ctrl_btn_A').on("click", function() {
    $('#result').append('A');
  });

  $('#ctrl_btn_B').on("click", function() {
    $('#result').append('B');
  });
});

以下のようにすると、テスト実行時に初期化されるため「初回」のテストが可能となる。

  <button id="ctrl_btn_A">A_button</button>
  <button id="ctrl_btn_B">B_button</button>

  <div id="qunit-fixture">
    <div id="result"></div>
  </div>
<!--
  以下のようにqunit-fixtureエリア外にある場合は初期化は行われない
  <div id="result"></div>
-->

また、テストケース毎の初期化のため以下のようにしなければならない。

QUnit.test("クリックして文字を出す", function( assert ) {
    var event = $.Event( "click" );
    $( "#ctrl_btn_A" ).trigger( event ); 
    assert.equal( $( "#result" ).text(), 'A', 'A初回クリックの出力');
});

QUnit.test("クリックして文字を出す", function( assert ) {
    var event = $.Event( "click" );
    $( "#ctrl_btn_B" ).trigger( event ); 
    assert.equal( $( "#result" ).text(), 'B', 'B初回クリックの出力');
});

// 以下は1テストケース内の継続処理となるためBボタンクリック時はABが出力される。
QUnit.test("クリックして文字を出す", function( assert ) {
    var event = $.Event( "click" );
    $( "#ctrl_btn_A" ).trigger( event ); 
    assert.equal( $( "#result" ).text(), 'A', 'A初回クリックの出力');
    $( "#ctrl_btn_B" ).trigger( event ); 
    assert.equal( $( "#result" ).text(), 'AB', 'B継続クリックの出力');
});
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1