RAILS PRESS RUBY on RAILS, it’s DRY and COOL …

RSS Feed

RAILS PRESS RSS

Tag Cloud

はてなブックマーク - railspress.matake.jp の注目エントリー
象形文字くさび形文字ミイラそろばんの玉そろばんコーラン占いの板?象牙大英博物館
« 前のエントリ
Railsでテストしよう!Test環境でのmemcached設定(memcached.yml)
次のエントリー »
migrationで初期データを生成するのは辞めた方がよい。

Posted on
2007/10/16

Tags
Plugin, テスト

Keywords


この記事をはてなブックマークに登録 この記事のはてなブックマーク数 この記事を livedoor クリップに登録この記事の livedoor クリップ数 このエントリを del.icio.us に追加
ブックマークに追加する

Railsでテストしよう!FileColumn&RMagickを使うモデルでファイルアップロードする方法&Fixtureで画像を登録する方法

Railsでのテストプログラミングシリーズ第二弾。

FileColumnを使っているモデルでは、RMagickを使ってversion管理してる画像についてはファルの有無がチェックされます。
そのため、Fixtureでファイル名だけを書いていても、テストでエラーがでることがあります。

またファイルアップロードもActionController::TestUploadedFile.newを使ったり、「[test][bug]Integration testの中でファイルアップロードができない」にある方法も使うという手段もあるようですが、FileColumnにはファイルアップロードのメソッドも用意されていました。

詳しくはvendor/plugins/file_column/lib/test_case.rbにいろいろと書いているのですが、ここではファイルアップロードの方法とFixtureで画像を登録する方法をまとめます。

ファイルアップロードの方法

これは簡単。
uploadというメソッドを使うだけ。

LANG : RUBY
  1. post :new, :file => upload "#{RAILS_ROOT}/public/images/rails.png"

ActionController::TestUploadedFile.newを使う場合はこんな感じなので、少し分かりやすくはなりますね。

LANG : RUBY
  1. post :new, :file => ActionController::TestUploadedFile.new "#{RAILS_ROOT}/public/images/rails.png"

Fixtureで画像を登録する方法

こちらはあらかじめRAILS_ROOT/test/以下にテスト用のファイルを用意しておいて、setup_fixture_filesでそれを適宜適切なディレクトリにコピーするという手段をとります。

モデル名がUser、FileColumnを使うテーブル名がimageの場合だと、以下の場所にテストデータを用意します。

LANG : shell etc.
  1. RAILS_ROOT/test/fixtures/file_column/user/image/user_image.jpg

そして、UserモデルのFixtureで以下の様に定義して、

LANG : shell etc.
  1. first:
  2.   image: user_image.jpg

UserControllerTestのsetupで以下の様にsetup_fixture_filesをよんでやります。

LANG : RUBY
  1. def setup
  2.     setup_fixture_files
  3.     @controller = CookingReportsController.new
  4.     @request    = ActionController::TestRequest.new
  5.     @response   = ActionController::TestResponse.new
  6.   end

これでOK!


この記事がお役に立ちましたら、一言コメントもらえると嬉しいですm_ _m


コメントはこちらから




使用可能タグ: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


« 前のエントリ
Railsでテストしよう!Test環境でのmemcached設定(memcached.yml)
次のエントリー »
migrationで初期データを生成するのは辞めた方がよい。