鉴于此Active Job方法在其调用的方法之一中有很多开销。在这种情况下,foo.generate
是一个大的CSV文件。
class SomeJob < ApplicationJob
queue_as :default
def perform(foo)
csv = foo.generate
JobMailer.send_csv(foo.email, csv).deliver
end
end
我知道你可以使用模拟为foo.generate
创建输出,但是我做的越多,我觉得我只是在测试中写出整个方法。有人可以给我一些指导吗?
答案 0 :(得分:1)
您可以拥有一个csv虚拟文件,并从那里读取内容,然后模拟foo.generate的响应。不确定你想要测试什么,所以我离开了待处理的。
describe "csv" do
let(:csv_doc) { IO.read(Rails.root.join("spec", "fixtures", "dummy_csv.csv")) }
it "test something" do
allow_any_instance_of(Foo).to receive(:generate).and_return(csv_doc)
expect(something).to be true
end
end
如果您关心csv内容,如果不是,您只需要做这样的事情。在这种情况下,Foo是foo类型。
allow_any_instance_of(Foo).to receive(:generate).and_return('something')