fc2ブログ

2025.02 «  - - - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - - - - - » 2025.04
TOP > CATEGORY > [2.0]テスト

TOP

Rails 2.0・その22(fixture の ID は基本不要) 

2008年03月24日 ()
テストを流す前にデータベースに入れておきたいデータをごりごり書いておく fixture ファイルですが、データとして id を指定する必要がなくなりました。

fixture で、id の値を省くと、ラベルのハッシュ値が id として使用されます。

activerecord-2.0.2/lib/active_record/fixtures.rb にそう書いてありました。

  def self.identify(label)
    label.to_s.hash.abs
  end



なので yaml 形式の fixture は、例えば以下のように書くことができます。

people テーブルに、name と age カラムがある場合

Rails2.0
test/fixtures/people.yml

dave:
  name: Dave Smith
  age: 11

mike:
  name: Mike Howdy
  age: 32



↑id:1などと、自分で id を振っても別に構わないです。面倒臭いけど。



Rails1.2

dave:
  id:1
  name: Dave Smith
  age: 11

mike:
  id:2
  name: Mike Howdy
  age: 32






あと、belongs_to 関係にあるときは、属している親のラベル名を指定することができますよ。


Rails2.0
test/fixtures/people.yml

dave:
  name: Dave Smith
  age: 11
  country: us

mike:
  name: Mike Howdy
  age: 32
  country: uk



test/fixtures/countries.yml

us:
  name: The United States
  capital: Washington D.C.

uk:
  name: The United Kingdom
  capital: London




キュッ キュキュッ キュキュッ キュキュキュ ダーテニヤスクハアリマセリーヌディオーン

【広告】

[2008.03.24(Mon) 23:46] [2.0]テストTrackback(0) | Comments(0) 見る▼
↑TOPへ

Rails 2.0・その16(シナリオを書いてのパフォーマンステストがし易くなりました) 

2008年03月04日 ()
同じ順番で画面遷移、というかリクエストをサーバに投げるということを繰り返し繰り返し実行して平均の速度を測る、という作業が楽になりました。

手順としては、

1.ファイルにどのようなリクエストをどの順番でサーバに投げるか、を書く。
2.script/performance/request を実行する。

まず1.のやり方ですが、

Railsのマニュアルを見ながら、せっせこせっせことシナリオをテストしたい順番通りに書いていきます。

get_via_redirect '/'
get_via_redirect '/people'
post_via_redirect '/people', :person => {:name => 'Mike', :age => 23}



シナリオを書いたらどこでもいいからファイルに保存します。そして、2.のコマンドを打って差し上げましょう。

script/performance/request -n 5 シナリオファイル名



-n の後ろの数字が、何回シナリオを繰り返すか、です。

そうすると

0.96 sec, 4 requests, 4 req/sec

Profiling 5x
x....
6.95 sec, 20 requests, 2 req/sec



なんて感じに無事に表示されました。やれやーれ。

【広告】

[2008.03.04(Tue) 01:55] [2.0]テストTrackback(0) | Comments(0) 見る▼
↑TOPへ

TOP