型や値の確認
型や値の確認を行う関数をまとめたモジュールTestの説明を行います。先に説明したConsoleを使用して、テストの結果を表示します。変数をテストする例題を見て行きましょう。以下、例題起動時の画面です。

まず、Y.Test.Case()でテストケースを作成して、Y.Test.Suite()で登録を行い、Y.Test.Runnerに追加してY.Test.Runner.run()で実行するという順序になります。リスト5を見てください。
YUI().use("console", "test", function(Y) {
//テストケース
var DataTestCase = new Y.Test.Case({
name : "DataTest", //(1)
setUp : function () { //(2)
this.data = {
name: "山田花子",
birth: 1988
};
},
tearDown : function () { //(3)
delete this.data;
},
testName : function () { //(4)
var Assert = Y.Assert;
Assert.isObject(this.data);
Assert.isString(this.data.name);
Assert.areEqual("山田花子", this.data.name);
},
testYear : function () { //(5)
var Assert = Y.Assert;
Assert.isObject(this.data);
Assert.isNumber(this.data.birth);
Assert.areEqual(1998, this.data.birth);
}
});
var Suite1 = new Y.Test.Suite("Suite1");
Suite1.add(DataTestCase); //(6)
//console生成
var r = new Y.Console({ //(7)
newestOnTop:false,
style: 'separate',
height:'400px'
}).render();
//Test.Runnerに 追加
Y.Test.Runner.add(Suite1); //(8)
//実行
Y.Test.Runner.run(); //(9)
});
</script>
</head>
<body class="yui3-skin-sam">
<h4>Test</h4>
</body>
(1)から(5)はテストケースの作成です。(1)のテストケース名nameはlogウィンドウなどに表示されるものなので、必ず書く必要があります。setUpでテストに必要な情報を初期化し、tearDownでメモリーを解放します。テストの内容を指定するメソッドの名前の前には必ず"test"をつけます。(4)(5)のY.Assertで使用できるメソッドを以下の表に示します。
()内の引数にはテストしたいオブジェクト(関数や変数)を設定します。
| メソッド | 概要 |
| isArray(Object) | 配列か |
| isBoolean(Object) | ブール値か |
| isFunction(Object) | 関数か |
| isNumber(Object) | 数値か |
| isObject(Object) | オブジェクトか |
| isString(Object) | 文字列か |
| isFalse(Object) | 偽か |
| isTrue(Object) | 真か |
| isNull(Object) | NULL値か |
| areEqual(Object,Object) | 値が等しいか |
(6)でY.Test.Suiteに追加し、(8)でY.Test.Runnerに追加して(9)の.runで実行させます。結果は(7)で指定したConsoleに表示されます。
テスト用仮メソッドや仮プロパティの作成
モジュールTextには、実際にテストをしたい場所以外のデータを仮に作成して、テストできるようサポートしたMockObjectが用意されています。使い方をみて行きましょう。データ読み込みの関数を作成し、読み込み部分に仮のデータを設定します。実行画面を図6に示します。

以下のリスト6を見てください。
function runTest(gr){ //(1)
var a=gr.name(1);
alert(a);
}
YUI().use("console", "test", function(Y) {
//関数のテスト
var DataTestCase = new Y.Test.Case({
name : "functionTest",
testfunction:function(){
var mockChek= Y.Mock(); //(2)
Y.Mock.expect(mockChek,{ //(3)
method: "name",
args:[1],
returns:"山田花子"
});
runTest(mockChek); //functionテスト
Y.Mock.verify(mockChek); //(4)
}
});
var Suite1 = new Y.Test.Suite("Suite1");
Suite1.add(DataTestCase);
//console生成
var r = new Y.Console({
newestOnTop:false,
style: 'separate',
height:'400px'
}).render();
//Test Runnseに 追加
Y.Test.Runner.add(Suite1);
//実行
Y.Test.Runner.run();
});
</script>
</head>
<body class="yui3-skin-sam">
<h4>TestMock</h4>
</body>
(1)はテスト用関数です。引数で読み込むオブジェクトのnameメソッドをMockObjectで作成しています。(2)でmockChekを宣言し、Y.Mock.expectで仮設定を行っています。(3)はメソッドの時、methodとargsは必須です。必要により、returnsを追加してください。プロパティの時はpropertyとvalueになります。エラーの時は(4)でエラー情報がlogウィンドウに表示されます。以降のリストはリスト5と同じです。
