JavaScript Railsで使えるGem RubyOnRailsの開発環境

Rails3.2でJasmineをつかってCoffeeScriptをテスト~jasminerice

投稿日:

 

 

#261 Testing JavaScript with Jasmine (revised)

 

addyosmani.github.com/backbone-fundamentals/#unit-testing

github.com/bradphelan/jasminerice

JasmineはJavascript用のテストフレームワーク PlayFramework 1.2とかでも採用されてた

JasminericeはJasmineをRubyから使えるgemでjasmine-jqueryというjquery用のライブラリを含んでいるらしい

インストール

bundle

generate ファイル

できるファイルはこちら

使い方

spec.js.coffeeにapp/assets/javascriptsのファイルを追加する

 

rails sでサーバを起動しサーバアドレス/jasmineにアクセスする

2013-01-21_20h16_02

fooがみつからないとか言われる

これはJasmineがサンプルのfoo_spec.js.coffeeに書いてあるfoo.js.coffeeを探しにいってるけど見つからないから

そこで、app/assets/javascripts/foo.js.coffeeをつくってみる(いまは空のファイルでOK)

2013-01-21_20h22_30

こんどはbarがないといわれるので、app/assets/javascripts/bar.js.coffeeもつくる

こんどはテストが実行されるけど失敗

テスト駆動開発では、まずテストを通して失敗→テストを成功させる→リファクタリングの手順ですすむ

エラーからテストが実行されたということは一歩進んだって意味

2013-01-21_20h25_19

サンプルでテストをパスしてみる

順番にテストを成功させていく

まず上のエラーから読んでいく

jQueryが定義されていないということなので、spec.js.coffeeの方でライブラリを読み込むことにした

一応、jqueryとjquery_ujsを読み込んでおく

ブラウザをリロードするとエラーメッセージが変わってる

クラスFooが定義されていないということなので定義する

まだメッセージは変わらない。CoffeeScriptのコンパイラがファイルごとにスクリプトを(funcion(){}).callでくくってしまうため、他のファイルから他のファイルの名前を認識できないから。これを破るにはグローバルな空間に名前をつければいい

今度はエラーメッセージが変わる

そこで、メソッドbarを定義する

つぎのメッセージは

falseを返してほしかったのにundefinedだったということなので、barがfalseを返すようにする

やっと1個テストをパスした

2013-01-21_21h09_29

次のエラーメッセージもだいたい同じなので

同じように テストをパスすると

大変気持ちがいい

2013-01-21_21h12_37

あとはgitにコミットしてから、テストグリーンを維持しつつコードを改良していく(リファクタリング)

JasmineのDSLとか詳しい使い方は公式へ

pivotal.github.com/jasmine/

-JavaScript, Railsで使えるGem, RubyOnRailsの開発環境
-

執筆者:

関連記事

Rails generateのときにbelongs_toを設定

By: Michael Douglas Bramwell – CC BY 2.0 using belongs_to with scaffold generator to quickly c …

RailsでHTML5対応のvideoプレイヤーを利用してみる~flowplayer5.0.0

  参考 flowplayer.org/ Flowplayerのサイトからバージョン5.0.0がダウンロードできる flowplayer-gemのバージョンは3.2.4 バージョン5では基本 …

no image

Ubuntu Server 12.04で動画のサムネイルを作成~avconv ffmpeg

  目次1 インストール2 動画の情報3 使えるフォーマットの一覧4 サムネイル画像の作成 インストール

総合的な動画の変換 …

no image

Rails3.2でOpenDocumentText(.odt)を作成~serenity

  これも途中経過デス   odtはOpenOffice.orgのwriterなんかの保存形式 serenityはerbライクなodtテンプレートから変数を利用して文書を作成してく …

backbone-relationalで関連するコレクションをRails3.2のAPIに投稿〜accepts_nested_attributes_for

By: Mike Baird – CC BY 2.0   backbonerelational.org/ Backbone-relationalを使って関連するコレクションをまと …