2017-11-06 3 views
1

이것은 RoR에 대한 저의 첫 경험이며 컨트롤러를 테스트하기 위해 rspec 도구를 사용합니다.레이크 작업이 완료되었는지 확인하는 방법은 무엇입니까?

def scan_all_urls 
    system 'rake scan_all_urls &' 
end 

을 그리고 내 레이크 작업은 이것이다 : 그러나이 방법 안에, 레이크 작업을 사용하여 I는 다음과 같이 비동기 솔루션을 만들 수

task :scan_all_urls => :environment do 
    crawler = Crawler.new 
    urls = Url.all 
    crawler.scan_urls(urls) 
end 

하지만 내 문제는 RSpec에 시험에,이다 :

it 'should scan all url' do 
    params = {} 
    get 'scan_all_urls', params: params, format: :json 
end 

갈퀴 작업이 끝날 때까지 기다릴 수있는 방법은 무엇입니까?

답변

1

레이크 작업이 완료되었는지 실제로 확인할 수는 없습니다. 나는 당신에게 Crawler#scan_urls에 대한 좋은 사양을 쓰고 컨트롤러에 Crawler이 호출되었는지 확인해 볼 것을 제안합니다.

또한 컨트롤러 사양에서 값을 반환하는지 테스트하십시오. 컨트롤러 사양은 다음과 같습니다.

it 'should scan all url' do 
    expect(Crawler).to receive(:new).and_call_original 

    params = {} 
    get 'scan_all_urls', params: params, format: :json 

    expect(MultiJson.load response.body).to # something 
end 
관련 문제