如何在 RSpec 中使用模拟测试 Active Job 方法?
How can I test an Active Job method with mocks in RSpec?
鉴于此 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
的输出,但我越是这样做,我觉得我只是在测试中写出整个方法。有人可以给我一些指导吗?
你可以有一个 csv 虚拟文件,从那里读取内容,然后模拟 foo.generate 的响应。不确定你想测试什么,所以我留下了 except 未决。
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')
鉴于此 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
的输出,但我越是这样做,我觉得我只是在测试中写出整个方法。有人可以给我一些指导吗?
你可以有一个 csv 虚拟文件,从那里读取内容,然后模拟 foo.generate 的响应。不确定你想测试什么,所以我留下了 except 未决。
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')