Pregunta

He definido los siguientes SuckerPunch Trabajo:

class MyWorker
  include SuckerPunch::Job

  def perform(account)
    @account = account
  end

  def params
    @account
  end
end

Y quiero probarlo usando RSpec:

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

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

Esto funciona bien cuando se prueba sin include SuckerPunch::Job.Probablemente debido a que el tema se refiere a una instancia de ActorProxy en lugar de MyWorker.

¿Cómo debo probar MyWorker?O ¿cómo debo acceder a la instancia de MyWorker?He leído el Trampas se describe en el Celuloide de la wiki, pero la #wrapped_object método no existir (ya).

¿Fue útil?

Solución

Si usted mira en https://github.com/brandonhilkert/sucker_punch/blob/master/lib/sucker_punch/job.rb, verás que MyWorker.new es de hecho cada vez redefinido para devolver algo distinto a una instancia de la MyWorker clase.En realidad es una Celluloid::PoolManager.

De todos modos, si quieres acceder a la params método de instancia definidas dentro de MyWorker, puede allocate una instancia de la clase, de la siguiente manera:

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

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

allocate es un método de instancia de Class es como new, pero sin la llamada a initialize.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top