这是我的第一个问题,如果我遗漏了什么,请原谅我。
lib
我在我的目录中的 Rails 3.2 应用程序中编写了一个类。然后,我的lib/tasks
目录中有一个需要该lib
文件的 rake 任务,实例化该类(让我们称之为它MailchimpExporter
)并在该类上执行一个export_all
方法。
该类已经过全面测试,但我还想为 rake 任务编写一个测试,以确保在export_all
调用任务时针对该类调用该类。
我从以下内容开始:
规范/lib/tasks/export_to_mailchimp_spec.rb
it 'should export to all lists' do
MailchimpExporter.any_instance.stub(:export_all)
Rake::Task[:export_to_mailchimp].invoke
expect(MailchimpExporter.any_instance).to have_received(:export_all)
end
但是同时调用#any_instance
设置和断言都会引发错误。我改为将其更改为以下内容,使其运行,尽管可能不是最好的代码:
it 'should export to all lists' do
chimpy = MailchimpExporter.new
MailchimpExporter.stub(:new).and_return(chimpy)
chimpy.stub(:export_all)
Rake::Task[:export_to_mailchimp].invoke
expect(chimpy).to have_received(:export_all)
end
我想知道是否有更好的方法来解决这个问题,我也希望能解释为什么你不能同时调用#any_instance
设置和断言。谢谢您的帮助!