Учитывая модель с методом self.fetch_payment_method
:
def self.fetch_payment_method
name = "Omnikassa"
pm = Spree::PaymentMethod.find(:first, :conditions => [ "lower(name) = ?", name.downcase ]) || raise(ActiveRecord::RecordNotFound)
end
И тест rspec для проверки этого:
it 'should find a payment_method' do
Spree::PaymentMethod.new(:name => "Omnikassa").save
@omnikassa.class.fetch_payment_method.should be_a_kind_of(Spree::PaymentMethod)
end
Я хотел бы улучшить это, так что это делаетне проверять весь стек и базу данных.Для этого я просто хотел бы заглушить ": найти" при вызове класса Spree::PaymentMethod
.Однако:
it 'should find a payment_method' do
Spree::PaymentMethod.any_instance.stub(:find).and_return(Spree::PaymentMethod.new)
@omnikassa.class.fetch_payment_method.should be_a_kind_of(Spree::PaymentMethod)
end
Не работает.Я довольно новичок во всем, что касается BDD / TDD, а заглушки и издевательства все еще являются чем-то магическим для меня;так что я, скорее всего, неправильно понимаю, что именно делает заглушка и возвращение.
Как мне заглушить SomeActiveRecordModel.find?