我有一個類,它是這樣的:如何使用rspec測試活動記錄關係來測試where子句?
class Foo < ActiveRecrod::Base
has_many :bars
def nasty_bars_present?
bars.where(bar_type: "Nasty").any?
end
validate :validate_nasty_bars
def validate_nasty_bars
if nasty_bars_present?
errors.add(:base, :nasty_bars_present)
end
end
end
在測試#nasty_bars_present?我想方法喜歡寫一個rspec測試存根棒協會,但允許自然執行的地方。例如:
describe "#nasty_bars_present?" do
context "with nasty bars" do
before { foo.stub(:bars).and_return([mock(Bar, bar_type: "Nasty")]) }
it "should return true" do
expect(foo.nasty_bars_present?).to be_true
end
end
end
上面的測試給出了一個有關數組沒有方法的錯誤。我怎樣才能包裝模擬器,以便在哪裏執行適當的操作?
謝謝!
您使用的是什麼版本的RSpec? – nikkon226 2014-11-05 17:33:07
這個項目在2.14.1上,但我也會對最近發佈的版本感興趣。 – biagidp 2014-11-05 17:41:07