我在Rails 2-3-stable上使用factory_girl + rspec:
测试:
context "test" do
before(:each) do
@profile.stub!(:lastfm_enabled?).and_return(true)
end
it "should be able to scrobble if true" do
@profile.update_attribute(:lastfm_scrobbling, true)
@profile.lastfm_scrobbling_enabled?.should be_true
end
end
代码:
def lastfm_scrobbling_enabled?
lastfm_enabled? && lastfm_scrobbling
end
这个简单的测试失败了,加上真正的lastfm_enabled?方法被实际调用。
@profile不是模拟,它是用factory_girl创建的。
最初我还记下了lastfm_scrobbling属性,但我正在考虑factory_girl的工作方式,并且更喜欢直接设置它。
知道为什么吗?
答案 0 :(得分:3)
您需要存根read_attribute方法
before(:each) do
@profile.stub!(:read_attribute).with(:lastfm_enabled).and_return(true)
end