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の開発環境
-

執筆者:

関連記事

Rails5でコントローラーの記述を省略~inherited_resources

By: Simon Matzinger – CC BY 2.0 目次1 inherited_resources2 Gemfile3 使い方 inherited_resources inhe …

RailsでReactコンポーネントをつかう

By: justine warrington – CC BY 2.0 目次1 React on rails2 インストール3 react on railsで生成されるファイル4 mater …

MIddlemanでrails-assets.orgをつかってbowerのコンポーネントをつかう

By: Simon Cunningham – CC BY 2.0 middlemanは静的なサイトのジェネレータ rails-assets.orgは「the frictionless pr …

Rails3で帳票印刷を試す~thinreports

By: ZZ Bottom – CC BY 2.0 目次1 Thinreports2 とりあえずサンプルを試してみた3 ソースを見てみる1~詳細画面4 ソースを見てみる2~一覧表 Thin …

no image

Rails4とPostreSQL9.3で全文検索〜pg_bigm

目次1 準備2 migration3  使い方 準備 エクステンションを導入しておく Ubuntu Server12.04でPostgreSQL9.3をつかう〜pg_bigmで全文検索 migrati …