Ho una classe che simile a questa:Come interrompere una relazione di record attiva per testare una clausola where con rspec?
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
Nel testare il #nasty_bars_present? Mi piacerebbe scrivere un test rspec che blocca l'associazione delle barre, ma consente il modo in cui eseguire in modo naturale. Qualcosa di simile:
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
Il test precedente dà un errore sul fatto che non esiste un metodo per un array. Come posso avvolgere il mock in modo che il punto esatto venga eseguito correttamente?
Grazie!
Quale versione di RSpec stai usando? – nikkon226
Questo progetto è su 2.14.1, ma sarei interessato anche all'esecuzione della versione più recente. – biagidp