RSpec을 사용하여 SuckerPunch::Job 테스트
-
23-12-2019 - |
문제
나는 다음과 같은 SuckerPunch 작업을 정의했습니다.
class MyWorker
include SuckerPunch::Job
def perform(account)
@account = account
end
def params
@account
end
end
그리고 RSpec을 사용하여 테스트하고 싶습니다.
describe MyWorker do
before { subject.perform("test@mail.nl") }
its(:params) { should eq "test@mail.nl" }
end
없이 테스트할 때는 잘 작동합니다. include SuckerPunch::Job
.아마도 주제가 다음의 인스턴스를 참조하기 때문일 것입니다. ActorProxy
대신에 MyWorker
.
어떻게 테스트해야 하나요? MyWorker
?아니면 어떻게 인스턴스에 액세스해야 합니까? MyWorker
?나는 읽었다 문제 셀룰로이드 위키에 설명되어 있지만 #wrapped_object
메소드는 (더 이상) 존재하지 않습니다.
해결책
당신이 보면 https://github.com/brandonhilkert/sucker_punch/blob/master/lib/sucker_punch/job.rb, 너도 그걸 보게 될 거야 MyWorker.new
실제로 인스턴스가 아닌 다른 것을 반환하도록 재정의되고 있습니다. MyWorker
수업.실제로는 Celluloid::PoolManager
.
어쨌든, 접속하고 싶다면 params
내에 정의된 인스턴스 메소드 MyWorker
, 당신은 할 수 있습니다 allocate
클래스의 인스턴스는 다음과 같습니다.
describe MyWorker do
subject { MyWorker.allocate }
before { subject.perform("test@mail.nl") }
its(:params) { should eq "test@mail.nl" }
end
allocate
인스턴스 메서드는 다음과 같습니다. Class
처럼 new
, 하지만 전화를 걸지 않고 initialize
.
제휴하지 않습니다 StackOverflow