前回のエントリーではローカル環境に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点。
- テスト対象がuser.jsだったら、テストケースのファイル名をuser_test.jsとすること。(これによってテストケースを保存すると自動でテストが実行されます。)
- 最初のrequire("./support/paths")は、絶対パスにすること。(環境変数でなんとかなるのかもしれませんが。)
- テストの名前の最初は、「test 〜」で始めること。(頭文字が小文字のt以外で始まるテストが認識されません。)
- 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) ですのでテストが通りました。やっとプロジェクトを開始できます。
0 件のコメント:
コメントを投稿