テストケースの書き方には、次の2通りがある。Getting Started with JsTestDriverでは、プロトタイプを使っているが、『JavaScript実践入門』に習って、インライン宣言を使う。インライン宣言だと、テスト名に任意の文字列が使える。また、記述量も少なくなる。
- プロトタイプを使う
- インライン宣言を使う
TestCase('GreeterTest', { setUp:function() { // 必要に応じてセットアップ処理を実装する。 }, 'test greet returns Hello World!':function() { // Set up var sut = new myapp.Greeter(); // Exercise var actual = sut.greet('World'); // Verify assertEquals('Hello World!', actual); }, tearDown:function() { // 必要に応じてティアダウン処理を実装する。 } });
テストターゲットが非同期の場合は、TestCaseクラスではなくて、AsyncTestCaseクラスを使う。AsyncTestCase - js-test-driverのサンプルコードを元に、インライン宣言を使って書き直すと次のようになるはず(JsHintはおおよそ通したが未実行なので、修正が必要かもしれない)。また、高度な内容(コールバック関数の実行タイミングの制御など)はAsyncTestCase - js-test-driverを参照のこと。
AsyncTestCase('XhrTest', { 'test XHR using callbacks':function(queue) { // Set up var xhr = new XMLHttpRequest(); xhr.open('GET', '/some/path'); var responseStatus; var responseBody; queue.call('Step 1: send a request to the server and save the response status and body', function(callbacks) { var onStatusReceived = callbacks.add(function(status) { responseStatus = status; }); var onBodyReceived = callbacks.add(function(body) { responseBody = body; }); xhr.onreadystatechange = function() { if (xhr.readyState === 2) { // headers and status received onStatusReceived(xhr.status); } else if (xhr.readyState === 4) { // full body received onBodyReceived(xhr.responseText); } }; // Exercise xhr.send(null); }); // Verify queue.call('Step 2: assert the response status and body matches what we expect', function() { assertEquals(200, responseStatus); assertEquals('hello', responseBody); }); } });
0 件のコメント:
コメントを投稿