일부 resque 작업자와 이러한 작업자와 작업을 대기열에 추가하는 작업을 테스트하고 싶습니다. 나는 rspec과 레일을 사용하고있다.테스트 할 때 테스트 대기열과 실제 대기열을 구분하는 방법은 무엇입니까? (rspec 및 레일을 사용하여) Resque를 테스트 할 때
현재 모델이 있습니다. Categories.port와 함께 작업을 대기열에 추가해야 하는지를 확인하는 updates_related_categories라는 before_save 메소드가있는 Article.rb를 모델이라고합니다. 그렇다면 기사는 해당 기사와 관련된 카테고리 ID의 인수를 사용하여 해당 작업자와 함께 작업을 대기열에 추가합니다.
그러나 테스트에서 이러한 작업은 개발 서버가 작업을 보내는 큐와 동일한 큐로 보내집니다.
이1) 어떻게 개발 작업과는 다른 큐에 테스트 작업을 보낼 수 있습니다 내가 알고 싶은
(난 당신이 루트/레디 스/개요에서 서버로 묶을 수있는 resque 서버를 사용하여 확인) ?
가능하다면, 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
CategoriesSorter :
class CategoriesSorter
@queue=:sorting_queue
def self.perform(ids)
ids.each do |id|
#some code
end
end
end
사양 :
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
여기를 참조하십시오 : http://stackoverflow.com/a/5194478/459863 –