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でのお約束があるのか、自分のそもそもの使い方がおかしいのか、ご存じの方がいらっしゃいましたら宜しくお願いいたします。





回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/26 10:22:59
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません