2016-10-03 53 views
0

鑑於此活動作業方法在其調用的某個方法中有很多開銷。在這種情況下,這是一個大的CSV文件的foo.generate如何在RSpec中使用mock測試活動作業方法?

class SomeJob < ApplicationJob 
    queue_as :default 

    def perform(foo) 
    csv = foo.generate 
    JobMailer.send_csv(foo.email, csv).deliver 
    end 
end 

我知道,你可以用嘲笑創建輸出foo.generate,但我做的越多,我覺得我只是寫了在我的測試整個方法。有人能給我一些指導嗎?

+0

你可以有一個虛擬的csv文件並加載它,然後使用模擬。 allow_any_instance_of(SomeJob).to接收(:生成).and_return(csv.file.content) – vitomd

+0

@vitomd謝謝,你可以在代碼中編寫示例嗎?我很難嘗試複製。 –

回答

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') 
+0

非常感謝。 –

相關問題