这里是我掐灭到Etsy的一些类似的电话在一个项目我最近工作过。
module EtsyStubs
def stub_etsy_find_listing(options = {})
if options[:fail]
Etsy::Listing.stub(:find).and_return(nil)
return
end
etsy_item = OpenStruct.new(
state: options[:state],
price: options[:price],
result: {
"currency_code" => "USD",
"Variations" => []
}
)
Etsy::Listing.stub(:find).and_return(etsy_item)
end
end
这住在规格/支持目录中的文件,需要包括来自像config.include(EtsyStubs)
的spec_helper.rb。
您可以包括它从spec_hlper.rb所有规格有:
config.before(:each) do
stub_etsy_find_listing
end
或可单独测试之前,包括它。
关键是选择一个对象来响应相应的调用。在我的情况下,一个简单的OpenStruct会响应诸如etsy_item.price,etsy_item.state之类的东西,效果很好。