人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

RSpec on RailsにてBDD(振舞駆動開発)を試行していますが、上手くいかない部分があったので質問です。
スペックコードの中に、before(:all)を記述し、そのdescribeの中で1回だけ実行する事前準備を行いたいのですが、NoMethodErrorでテストがストップしてしまいます。

具体的には、

# Ruby Version: 1.8.6
# Rails Version: 2.1.0
# RSpec Version: 1.1.4
#
#===== Specのコード =======
describe "when user add a new follow." do
fixtures :users, :user_follows

before(:all) do
@yuma = users(:yuma)
@keisuke = users(:keisuke)
end

#====== ...以下、it methodが続く ==========

というスペックコードがあると、spec -fs -c spec/models/スペックファイル.rbをしたとき、

1)
NoMethodError in 'when user add a new follow. before(:all)'
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

というエラーが返ります。
上記のスペックファイルの before(:all) を before(:each) や before に置き換えると、itメソッドを評価してくれます(テストとしては失敗になりますが)。

何かRailsでのお約束があるのか、自分のそもそもの使い方がおかしいのか、ご存じの方がいらっしゃいましたら宜しくお願いいたします。








●質問者: keisuke_yamane
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ActiveRecord ADD ALL base BDD
○ 状態 :キャンセル
└ 回答数 : 1/1件

▽最新の回答へ

1 ● youku554

http://www.rails.com/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ