Tôi có một mô hình ActiveRecord, PricePackage. Điều đó có một cuộc gọi before_create trở lại. Cuộc gọi lại này sử dụng API của bên thứ ba để thực hiện kết nối từ xa. Tôi đang sử dụng cô gái nhà máy và muốn loại bỏ api này để khi các nhà máy mới được xây dựng trong khi thử nghiệm các cuộc gọi từ xa không được thực hiện.Làm thế nào để mô phỏng và sơ khai hồ sơ hoạt động before_create gọi lại với factory_girl
Tôi đang sử dụng Rspec cho mocks và cuống. Vấn đề tôi đang gặp là các phương pháp RSpec không có sẵn trong factories.rb tôi
mô hình:
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
nhà máy:
#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
Tôi không chắc chắn làm thế nào để có được rspec giả lập và sơ đồ giúp đỡ nạp vào factories.rb của tôi và điều này có thể không phải là cách tốt nhất để xử lý này.
là một sang một bên, khi bạn gán một tiền thưởng cho một câu hỏi tiền thưởng sẽ được thực hiện từ danh tiếng của bạn cho dù bạn gán nó là một điều tốt đẹp để làm cho f ollow qua nó và phân bổ nó cho một trong những câu trả lời mà mọi người đưa ra. Nếu không làm điều đó nó đơn giản bốc hơi –
Liệu 'pp.stub (: register_with_3rdparty) {true}' trong 'after_build' có gây ra lỗi nào không? – lulalala