Cookbook of QUnit

9912 ワード

この文章はQUnitの紹介で、とても良い入門教程とすることができます.文章のアドレス

紹介する


自動化テストではソフトウェア開発の過程で不可欠な部分であり、ユニットテストは自動化テストの最も基本的な部分であり、ソフトウェアの各コンポーネントである.
各機能ユニットは、オンライン時に正常に動作することを保証するために、テストを継続する必要があります.もちろん、テストもこれらの役割だけでなく、最も人間的なものです.
テスト駆動設計(test-driven design)が知られており、テストは実装より先に行われる.まず簡単なテストを書きます.もちろん、この時点で実行します.
エラーが発生し、テストに合格するまで具体的な実装を開始します.私たち自身でテスト関数を実現するだけでは、テストプロセスをつかむことができません.
の詳細(エラーコード、エラーコード、実行結果と予想結果の違い)、各ブラウザの互換性も狂ってしまうので、私たちは
ブラウザの違いを解決し、詳細な情報を提供するテストフレームワークが必要で、John Resig大神はQunitフレームワークを書いた.こんな金持ちは書けないが
調整型のフレームワークですが、QUnitの使い方を習得する必要があります.

オートメーションユニットテスト


に質問


アプリケーションをユニットテストしたり、テスト駆動設計から利益を得たりしたい場合は、自分でテスト関数を手動で書く必要があります.しかし、上記のようにテストは
詳細情報とブラウザの互換性は難しいので、解決する必要があります.

ソリューション


Qunitを使って、Qunitのお金を使って、qunitを導入する必要があります.jsとqunit.cssファイル
  
<!DOCTYPE html>

<html>

<head>

  <meta charset="utf-8">

  <title>QUnit basic example</title>

  <link rel="stylesheet" href="//code.jquery.com/qunit/qunit-1.16.0.css">

</head>

<body>

  <div id="qunit"></div>

  <div id="qunit-fixture"></div>

  <script src="//code.jquery.com/qunit/qunit-1.16.0.js"></script>

  <script>

    QUnit.test( "a basic test example", function( assert ) {

      var value = "hello";

      assert.equal( value, "hello", "We expect value to be hello" );

    });

  </script>

</body>

</html>

idがqunit-fixtureのdivラベルは必須であり、すべてのQunitテストで同じであり、テスト治具である.テストが終わるたびにテスト治具内の
内容が空になる.
テスタがQUnitを実行するテストの開始時間を制御するため、documentReadyの後にテストが実行されていないことがわかります.test
を選択すると、関数が待機キューに追加され、テスタ呼び出しがわかります.

アサーション結果


に質問


ユニットテストに欠かせない要素の一つだと断言します.使用者は、予想される結果と、テスタに具体的な実装を実行させる結果とを比較し、対応する
の判断を下す.

イニシアチブ


Qunitは簡単な断言を提供した.

  ok( truthy [, message ] )


最も基本的な断言はok()であり、booleanパラメータ(またはbooleanに変換できるパラメータ、jsではbooleanにタイプ変換できるようです)を提供する必要があります.
別のパラメータはオプションです.
  
QUnit.test( "ok test", function( assert ) {

  assert.ok( true, "true succeeds" );

  assert.ok( "non-empty", "non-empty string succeeds" );

 

  assert.ok( false, "false fails" );

  assert.ok( 0, "0 fails" );

  assert.ok( NaN, "NaN fails" );

  assert.ok( "", "empty string fails" );

  assert.ok( null, "null fails" );

  assert.ok( undefined, "undefined fails" );

});

  equal( actual, expected [, message ] )


equalは「==」オペレータを使用してactualパラメータとexpectedパラメータを比較し、messageはテストによって表示された情報です.
  
QUnit.test( "equal test", function( assert ) {

  assert.equal( 0, 0, "Zero, Zero; equal succeeds" );

  assert.equal( "", 0, "Empty, Zero; equal succeeds" );

  assert.equal( "", "", "Empty, Empty; equal succeeds" );

  assert.equal( 0, false, "Zero, false; equal succeeds" );

 

  assert.equal( "three", 3, "Three, 3; equal fails" );

  assert.equal( null, false, "null, false; equal fails" );

});

strictEqual()は"==="で2つのパラメータを比較します.
  

  deepEqual( actual, expected [, message ] )


この方法は、単純な数値タイプについても「===」を使用して比較します.オブジェクトの場合は、====を使用しません.オブジェクトのプロパティを便利にし、キー値のペアを比較します.
(キーと値を比較します).
  
QUnit.test( "deepEqual test", function( assert ) {

  var obj = { foo: "bar" };

 

  assert.deepEqual( obj, { foo: "bar" }, "Two objects can be the same in value" );

});

シンクロコールバック


に質問


コールバック・モードでは、コールバック関数に格納されたコードがブレークスルーの実行を阻止する可能性があるため、ブレークスルーが実行されるかどうかを何らかの方法で注意する必要があります.

イニシアチブ


assert.を使ってもいいです.expect(n)は、予想される実行断言の数を設定する.予想される数の断言が実行されていない場合は、エラーが報告されます.
  
QUnit.test( "a test", function( assert ) {

  assert.expect( 2 );

 

  function calc( x, operation ) {

    return operation( x );

  }

 

  var result = calc( 2, function( x ) {

    assert.ok( true, "calc() calls operation function" );

    return x * x;

  });

 

  assert.equal( result, 4, "2 square equals 4" );

});

ひどうきコールバック


に質問


非同期コールバックは、テスタのキューとテストを実行する方法と競合します.テスト後のテスト関数は実行されません.

イニシアチブ


非同期コールバックでassertを使用した後、assertを呼び出す.aysnc()はdone関数を返し、テスト実行後にdone関数を呼び出します.
テストの結果、done関数を呼び出さないと、エンドスライス関数は実行されず、その後のテスト関数も実行されません.
  
QUnit.test( "asynchronous test: async input focus", function( assert ) {

  var done = assert.async();

  var input = $( "#test-input" ).focus();

  setTimeout(function() {

    assert.equal( document.activeElement, input[0], "Input was focused" );

    done();

  });

});

しけんのげんしせい


testを実行するたびに、QUnitは#qunit-fixtureのdom divをリセットし、含まれるイベントをリセットします.テストコードがテスト治具内にある限り、
治具を手動で清掃する.

グループテスト


グループテストは、論理的に類似したテストが一緒に実行されることを保証し、スライス関数を追加することができます.この関数は、テストの前後で実行されます.
  
QUnit.module( "module", {

  setup: function( assert ) {

    assert.ok( true, "one extra assert per test" );

  }, teardown: function( assert ) {

    assert.ok( true, "and one extra assert after each test" );

  }

});

QUnit.test( "test with setup and teardown", function() {

  assert.expect( 2 );

});