【发布时间】:2018-08-19 21:25:51
【问题描述】:
我在 ruby 模型中有一个方法调用,如下所示:
Contentful::PartnerCampaign.find_by(vanityUrl: referral_source).load.first
在模型 spec.rb 文件中,我试图模拟该调用并通过传入一个参数来获取一个值。但我无法找出正确的调用方式。
在我的 spec.rb 文件的顶部,我有:
let(:first_double) {
double("Contentful::Model", fields {:promotion_type => "Promotion 1"})
}
在描述块中,我尝试了以下操作:
expect(Contentful::PartnerCampaign).to receive_message_chain(:find_by, :load, :first).
and_return(first_double)
expect(Contentful::PartnerCampaign).to receive_message_chain(:find_by, :load, :first).with(vanityUrl: 'test_promo_path').
and_return(first_double)
expect(Contentful::PartnerCampaign).to receive_message_chain(:find_by => vanityUrl: 'test_promo_path', :load, :first).
and_return(first_double)
您可能已经猜到了,这些都不起作用。有谁知道做这种事情的正确方法?有没有可能?
【问题讨论】:
标签: ruby-on-rails ruby rspec mocking