トップ «前の日記(2009-07-28) 最新 次の日記(2009-07-30)» 編集

Route 477



2009-07-29

[ruby] RubyからJavaScriptのテストも行うためのライブラリあれこれ

RailsなどのWebフレームワークでは、「rake test」一発でWebアプリのテストが走ってくれて楽ちんなわけですが、 JavaScriptのテストは手作業でやってたりしませんか?

「rake test」でJavaScriptのテストもやってしまうためのライブラリがいろいろ出てきてるようなので、列挙してみました。

ブラウザを使うもの

実際にブラウザを起動し、それをRubyからコントロールすることでWebアプリのテストを行う。

Selenium

有名ですね。

調べてないんだけど、Rubyからも使えるし、JavaScriptを操作したりもできるんじゃないですかね(投げやり)。レポート求む。

Watir (RubyForge) #どっちが公式サイトなんだろう

Rubyからブラウザを起動し、操作する。

IE(Win)、Firefox(Win/Mac/Linux)、Safari(Mac)、Chrome(Win)をサポートしていると書いてある。充分ですね(Opera…)。あとFirefoxではFlashのテストもできると。

イベントの発火とかは簡単にできるみたい。 あとは、指定した要素が出現するまで1秒ずつ待ったりしてテストを行う。 (「ある座標の要素をクリック」とかになると結構大変そうだ。)

ブラウザを使わないもの

ブラウザは起動せず、spidermonkeyなどでJavaScriptをエミュレートすることでテストを行う。

Celenity

Java用のGUI-lessブラウザHtmlUnitをJRubyでラップしたもの。 JavaScriptのエミュレートにはRhinoを使用。jQueryやPrototype.jsなど、主要なライブラリは動作を確認しているそうで心強い。

WatirとのAPI互換を目指しているそうで、ブラウザを起動しない(ので速いはず)のがメリットか。

JRuby用のライブラリなので、Cの拡張を使ってるRailsアプリはテストできない…と思いきや、 JRubyでCelenityを、CRubyでRailsを動かし、その間を取り持ってくれるculerityというプロジェクトがある模様。 テストフレームワークはCucumber限定だけど、JRuby on Railsでうまく動かなかった場合には試すといいかも。

JSpec

JavaScript用のテストフレームワーク。…なのだけど、Rhinoを使ってコマンドラインからテストを実行する機能がある。

Railsから使う場合はjspec-railsを使うと簡単。

BlueRidge

JavaScriptのテストを行うためのRailsプラグイン。 JavaScriptのエミュレートにはRhinoを、ブラウザ環境のエミュレート(windowとかdocumentとか)には env.jsを使う。

JavaScriptのテストフレームワークにはScrew.Unitを、 モックライブラリにはSmokeを使う。 とりあえずサンプルアプリを動かしてみると良いです。

johnson + nokogiri + taka

NokogiriはHTMLパーサ、JohnsonはRubyで書かれたJSインタプリタ、TakaはRubyによるDOM実装。

まだ開発途上?

関係ないもの

Webrat

この日記でも一度紹介済み。Webアプリのテストを書きやすくしてくれるが、JSのテストはできない。

んで結局どれ使えばいいのさ

  • JRubyが使えるならCelenity
  • ブラウザ起動してもいいならWatir(かSelenium?)

ってとこですかねぇ。

まあThe Ruby Toolbox: Browser Testingで 人気のやつを使えばいいんじゃないの!

[ruby] Rakeを使って複数Rubyな環境を作る

ためのRakefileを書いてみた。

/Users/yhara/research/rubys % rake -T
(in /Users/yhara/research/rubys)
rake jruby     # install jruby
rake rubinius  # install rubinius
rake ruby185   # install ruby-1.8.5 p231
rake ruby186   # install ruby-1.8.6 p369
rake ruby187   # install ruby-1.8.7 p174
rake ruby191   # install ruby-1.9.1 p129

という感じです。実行すると~/bin/rubys 以下にインストールされ、~/bin/ruby185みたいなシンボリックリンクができる。

MacRubyもRakeで入れたかったんだけどうまく行かなかった…。IronRubyはまだ試してない。

本日のツッコミ(全2件) [ツッコミを入れる]
Yugui (2009-07-29 21:37)

SeleniumRC Spec ...

yhara (2009-07-29 22:02)

http://yugui.jp/articles/700 ですね!