jay*_*jay 3 rspec ruby-on-rails resque rspec2 ruby-on-rails-3
我想测试一些resque工作人员,以及将这些工作人员列入工作岗位的行动.我正在使用rspec和rails.
目前我有一个模型,我们称之为Article.rb,它有一个名为updates_related_categories的before_save方法,用于检查具有CategoriesSorter的作业是否需要入队.如果是这样,它会使该工作人员将作业排入队列,并使用与该文章相关的类别ID的参数.
但是,在测试中,这些作业将发送到开发服务器将作业发送到的同一队列.(我使用可以在root/redis/overview中绑定到服务器的resque服务器进行检查)
我想知道:
1)如何将测试作业发送到与开发作业不同的队列?
如果可以的话,也欢迎任何其他关于测试resque的建议.
我已经看到了一些相关的问题,这些问题表明resque-unit和resque-spec,但这些问题很不发达,我无法让它们达到有用的工作状态.另外,我听说过使用Resque.inline,但我不知道在这种情况下是否相关,因为在测试规范中没有调用resque,它是在保存测试中创建的对象时从文章模型中调用的.
示例代码:
Article.rb:
before_save :update_related_categories
def update_related_categories
#some if statements/checks to see if a related category needs updating
Resque.enqueue(CategoriesWorker, [category_id])
end
end
Run Code Online (Sandbox Code Playgroud)
CategoriesSorter:
class CategoriesSorter
@queue=:sorting_queue
def self.perform(ids)
ids.each do |id|
#some code
end
end
end
Run Code Online (Sandbox Code Playgroud)
眼镜:
it "should do something" do
@article = #set something to enqueue a job
@article.save
#can i check if a job is enqueued? can i send this job NOT to the development queue but a different one?
end
Run Code Online (Sandbox Code Playgroud)
小智 6
正如我所看到的,你不想测试是否将作业排入队列中进行调用 - 我们相信Resque会做它应该做的事情.但是,您可以测试1.调用update_related_categories将作业排入队列.然后,您可以单独测试2.工作者调用执行是否产生所需的行为.
对于一般的Resque测试,resque-spec和模拟工人的组合可以实现上述两个目标.
对于1,使用resque-spec,您可以模拟在类上调用perform方法的worker,然后检查它是否已正确排入队列:
describe "Calling update_related_categories " do
before(:each) do
ResqueSpec.reset!
end
it "should enqueue the job" do
Article.update_related_categories
CategoriesSorter.should have_queue_size_of(1)
end
end
Run Code Online (Sandbox Code Playgroud)
对于2,您可以创建一个Job(并指定一个单独的队列名称而不是您的开发队列),一个Resque :: Worker然后将Worker分配给Job:
def run_worker_simulation
# see Resque::Job api for setting the args you want
Resque::Job.create('test_queue_name', 'class_name', 'type', 'id')
worker = Resque::Worker.new('test_queue_name')
worker.very_verbose = true
job = worker.reserve
worker.perform(job)
end
Run Code Online (Sandbox Code Playgroud)
希望能给你一些想法.
| 归档时间: |
|
| 查看次数: |
2425 次 |
| 最近记录: |