gist

2012年2月1日水曜日

Cloud9 IDEでNode.jsのユニットテストができました

前回のエントリーではローカル環境にCloud9 IDEインストールしました。

この完成度に震えが止まらない!Node.js史上最高のIDE、Cloud9をインストールしよう。

今回はNode.jsのユニットテストをやってみます。結構、トラップがありました。

テストケースを準備するには、左のメニューからTestを選んで、New>New Unit Testを選択します。

すると、こんなテンプレが開きます。

"use strict";
require("./support/paths");

var assert = require("assert");
//var module = require("./module");

module.exports = {
    
    "test untitled 1" : function() {
        //assert.equal(!true, false);
    }

};

if (typeof module !== "undefined" && module === require.main) {
    require("asyncjs").test.testcase(module.exports).exec()
}

注意するのは、4点。

  1. テスト対象がuser.jsだったら、テストケースのファイル名をuser_test.jsとすること。(これによってテストケースを保存すると自動でテストが実行されます。)
  2. 最初のrequire("./support/paths")は、絶対パスにすること。(環境変数でなんとかなるのかもしれませんが。)
  3. テストの名前の最初は、「test 〜」で始めること。(頭文字が小文字のt以外で始まるテストが認識されません。)
  4. 15行目の module===require.main の条件は削除すること。

最初のrequireのパスのままですと、以下のようにmodule見つけられないよ!とエラーで怒られます。

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module './support/paths'
    at Function._resolveFilename (module.js:326:11)
    at Function._load (module.js:271:25)
    at require (module.js:355:19)
    at Object. (/Users/inouetomoyuki/Dropbox/Projects/node/cloud9_sample/user_test.js:2:1)
    at Module._compile (module.js:411:26)
    at Object..js (module.js:417:10)
    at Module.load (module.js:343:31)
    at Function._load (module.js:302:12)
    at Array.<anonymous> (module.js:430:10)
    at EventEmitter._tickCallback (node.js:126:26)

注意して作ったテストケースがこちら

"use strict";
require("/Users/inouetomoyuki/Dropbox/Projects/node/cloud9/cloud9/support/paths");

var assert = require("assert");
var module = require("./models/user.js");

module.exports = {
    
    "test of はじめての" : function() {
        assert.equal(!true, false);
    }
    
};

if (typeof module !== "undefined") {
    require("asyncjs").test.testcase(module.exports).exec()
}

テスト対象は、modelsフォルダを作って、user.js の空ファイルを置いただけ。

Test PanelのRun testをクリックするか、uset_test.jsを保存するとテストが実行されます。

assert.equal(!true, false) ですのでテストが通りました。やっとプロジェクトを開始できます。

関連ページ

この完成度に震えが止まらない!Node.js史上最高のIDE、Cloud9をインストールしよう。

0 件のコメント: