2016-10-03 2 views
0

호출하는 메서드 중 하나에서 오버 헤드가 많은이 활성 작업 메서드가 제공됩니다. 이 경우 큰 CSV 파일을 만드는 것은 foo.generate입니다.RSpec에서 모의 ​​작업을 통해 활성 작업 방법을 테스트하려면 어떻게해야합니까?

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 receive (: generate) .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

정말 고마워요. –

관련 문제