У меня есть модель ActiveRecord, PricePackage. У этого есть вызов before_create. Этот обратный вызов использует сторонний API для удаленного подключения. Я использую factory девушку и хотел бы закрыть эту апи, чтобы при создании новых фабрик во время тестирования удаленные вызовы не выполнялись.
Я использую Rspec для mocks и stubs. Проблема, с которой я сталкиваюсь, заключается в том, что методы Rspec недоступны на моих фабриках. Rb
Модель:
class PricePackage < ActiveRecord::Base
has_many :users
before_create :register_with_3rdparty
attr_accessible :price, :price_in_dollars, :price_in_cents, :title
def register_with_3rdparty
return true if self.price.nil?
begin
3rdPartyClass::Plan.create(
:amount => self.price_in_cents,
:interval => 'month',
:name => "#{::Rails.env} Item #{self.title}",
:currency => 'usd',
:id => self.title)
rescue Exception => ex
puts "stripe exception #{self.title} #{ex}, using existing price"
plan = 3rdPartyClass::Plan.retrieve(self.title)
self.price_in_cents = plan.amount
return true
end
end
factory:
#PricePackage
Factory.define :price_package do |f|
f.title "test_package"
f.price_in_cents "500"
f.max_domains "20"
f.max_users "4"
f.max_apps "10"
f.after_build do |pp|
#
#heres where would like to mock out the 3rd party response
#
3rd_party = mock()
3rd_party.stub!(:amount).price_in_cents
3rdPartyClass::Plan.stub!(:create).and_return(3rd_party)
end
end
Я не уверен, как получить rspec mock и помощников-заглушек, загруженных в мои фабрики .rb, и это может быть не лучший способ справиться с этим.