これが私のスペックとクラスのコードです:
describe Game do
before(:each) do
@game = Factory.build(:game)
end
describe '#no_books?' do
it 'should return true if books attribute is empty' do
@game.stub(:books).and_return([])
@game.no_books?.should be_true
end
it 'should return false if books attribute is present' do
@game.no_books?.should be_false
end
end
end
class Game
attr_reader :books
def initialize
@books = parse_books
end
def no_books?
@books.empty?
end
protected
def parse_books
# return books
end
end
次に、わかりやすい仕様の失敗メッセージが表示されます。
Game#no_books? should return true if books attribute is empty
Failure/Error: @game.no_books?.should be_true
expected false to be true
これは、属性ブックが値で初期化される前に、そのメソッドが呼び出されているかのようです。誰かが私にここで何が起こっているのか説明できますか?