Tengo una confusión al implementar Resque en paralelo con los ejemplos de Rspec. La siguiente es una clase con método costoso .generate(self)
clase SomeClass ... ChangeGenerator.generate (auto) ... final¿Cómo puentear las pruebas usando Resque con ejemplos de Rspec?
Después de implementar resque, la clase anterior cambió a la siguiente y se añade una clase ChangeRecorderJob .
class SomeClass
...
Resque.enqueue(ChangeRecorderJob, self.id)
...
end
class ChangeRecorderJob
@queue = :change_recorder_job
def self.perform(noti_id)
notification = Notification.find(noti_id)
ChangeGenerator.generate(notification)
end
end
Funciona perfectamente. Pero tengo 2 preocupaciones.
Antes, mi espec. De ejemplo se usa para probar la pila entera del método .generate(self)
. Pero ahora, desde que introduje eso en el trabajo de Resque, ¿cómo puedo unir mis ejemplos para hacer que la misma prueba sea verde sin aislar? ¿O tengo que aislar la prueba?
Y, por último, si tengo 10 trabajos para enque, ¿tengo que crear 10 clases de trabajo separadas con el método self.perform
?
Voy a tratar estas formas y veo que funciona para mí. – Autodidact
El 'Resque.inline = true' es una solución inteligente, pero como ha señalado puede hacer que las cosas se vuelvan lentas y he encontrado casos en algún código descuidado en el que ejecutarlo de forma síncrona tuvo resultados diferentes que las ejecuciones asincrónicas. Sería genial si Resque tuviera un ayudante de prueba donde pudieras hacer llamadas como 'Resque.last_job',' Resque.process! ', Y' Resque.clear! '. –