使用RSpec测试suckrpunch::Job

使用RSpec测试suckrpunch::Job,rspec,sucker-punch,Rspec,Sucker Punch,我已经定义了以下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)

我已经定义了以下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 stuckerpunch::Job
,这项功能可以正常工作。可能是因为主题引用的是
ActorProxy
的实例,而不是
MyWorker

我应该如何测试MyWorker?或者我应该如何访问
MyWorker
的实例?我已经阅读了赛璐珞维基中描述的,但是
#wrapped_object
方法已经不存在了。

如果你看一下,你会看到
MyWorker。new
确实被重新定义为返回
MyWorker
类的实例以外的其他内容。它实际上是一个赛璐珞::PoolManager

无论如何,如果要访问
MyWorker
中定义的
params
实例方法,可以
分配该类的一个实例,如下所示:

describe MyWorker do
  subject { MyWorker.allocate }
  before { subject.perform("test@mail.nl") }

  its(:params) { should eq "test@mail.nl" }
end

分配
类的一个实例方法
类似于
新建
,但不需要调用
初始化

非常感谢!另外,
job.rb
的链接也很有启发性。