RSPECを使用してSuckerPunch :: Job.
-
23-12-2019 - |
質問
次の吸い抜きジョブを定義しました:
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
のインスタンスにアクセスするにはどうすればよいですか。 gotchas はセルロイドWikiで説明されていますが、#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
のインスタンスメソッドです。
所属していません StackOverflow