WSHの単体テストフレームワークは

なに?

WSH対応のxUnitテストフレームワークに、ScriptUnitというのがあった。
試してないがVBScriptでも使えるみたいだ。

WSHスクリプト言語であるJScriptには、外部ファイルをインクルードする関数は存在しない

普段はクラスを単体のjsファイルに記述して、wsfファイルでまとめてインクルードしていたが、このテストユニットでは使えない。

なので、クラスファイルをロードする為に、ActiveXのFSOを使用して外部ファイルを読み込み、eval関数でクラスをロードする関数をテストの始めに書いた

あとはGUIフォームからテスト用のjsファイルを読み込めばいい、非常に簡単だ。

テスト成功の図


実行したテストコード

// クラスロード関数
function loadFile(filePath) {
    var fso = new ActiveXObject('Scripting.FileSystemObject');
    return fso.OpenTextFile(filePath).readAll();
}

// フルパス表記でクラスファイルをロードする
eval(loadFile('C:\\tmp\\wsh\\Hoge.js'));

// コンストラクタで指定した名前を返します。
function testGetName()
{
    var hoge = new Hoge('hoge');
    Assert.Equals(hoge.getName(), 'hoge');
}

使用したのはこれ ScriptUnit

http://www.xt1.org/scriptunit