--- layout: old_post title: rails plugin javascript_test - script.aculo.usのunittest.jsでTDD&BDD permalink: /tatsuya/show/411-rails-plugin-javascript-test-script-aculo-us-unittest-js-tdd-bdd ---

via Dr Nic - Autotesting Javascript in Rails

script.aculo.usのunittest.jsを使ったRailsプラグインの javascript_test なかなか良さそう。generatorでテストのひな形作成、auto_testに対応してくれる。unittest.js単体もBDD的な記述、ベンチマーク、辺りが良い。

#インストール
ruby script/plugin install javascript_test
mkdir test/javascript
ln -s vendor/plugins/javascript_test/assets/ test/javascript/assets

#テスト作成
ruby script/generate javascript_test hoge
> create test/javascript/hoge_test.html
> create public/javascripts/hoge.js

#テスト書いて
# test/javascript/hoge_test.html
testTruth: function() {with(this) {
  assertEqual(X, "hoge");
}}

#実際のjsコード
# public/javascripts/hoge.js
X = "hoge";

#テスト実行
rake test:javascripts

手元のMacだとSafariとFireFoxが自動で立ち上がって、テスト結果が表示される筈

BDD的に書きたくても大丈夫。String, Array, Number辺りの基本クラスを拡張して、shouldEqualみたいなメソッドを追加してくれる。

Test.context("BDD-style testing",{
  "setup": function(){
    console.log("Now setup!!");
    hoge = "Test";
  },
  "teardown": function(){
    console.log("Now teardown!!");
  },
  "should automatically add methods to strings": function(){
    hoge.shouldEqual("Test");
    hoge.shouldNotEqual("HoHoHo");
    hoge.shouldNotBeNull();
    hoge.shouldBeA(String);
    hoge.shouldNotBeA(Number);
  }
});

unittest.jsについて、詳細はこちらのサイトが詳しい。

script.aculo.usのUnitTestの使い方 前編 - Yak blog

script.aculo.us付属のユニットテスト(unittest.js)の使い方 後編 - Yak blog