저는 Capybara와 Poltergeist를 사용하여 setTimeout을 사용하여 정기적으로 페이지 내용을 새로 고치는 색인 페이지를 테스트하고 있습니다. 페이지 내용은 외부 서비스를 기반으로 세 가지 상태 사이를 전환하며 각 상태에 대해 카세트가 있습니다.여러 VCR 카세트를 사용하여 자바 스크립트를 새로 고칩니다.
VCR.use_cassette 'object_new' do
visit index_path
page.should have_content 'New'
end
VCR.use_cassette 'object_running' do
page.should have_content 'Running'
end
VCR.use_cassette 'object_complete' do
page.should have_content 'Complete'
end
첫 번째 have_content
는 성공하지만 두 번째는하지 않습니다 :
using_wait_time
을 시도했지만, 그것은 도움이되지 않습니다. 이 작품을 만들기 위해 제 스펙에서 누락 된 부분에 대한 아이디어는 있습니까? 이 기능은 브라우저에서 작동합니다. 그냥 지나치지 않는 테스트 일뿐입니다.
호출은 레일 앱에서 이루어지고, 상기 JS는 편안한 API에 액세스한다. 전체 스택을 테스트하고 싶습니다. 따라서 Rails 응용 프로그램의 API를 사용하고 VCR을 사용하여 백엔드에서 서비스를 조롱합니다. 그게 문제가있는 곳입니다. JS는 사양에 따라 API를 호출 할 때,합니다 (JS가 실행중인 내 레일 응용 프로그램의 테스트 버전을 호출하기 때문에)이 변경된 카세트가 있어야하지만, 난 여전히 처음 카세트가로드 된 경우와 같은 반응을 얻고있다. – jmacdonald
은 어떻게 관장 공동 AJAX를하는 카세트의 변화와 JS 코드에서 호출입니까? AJAX 호출은 카세트를 변경하기 전이나 후에 별도의 프로세스에서 발생하기 때문에 발생할 수 있습니다. 요청이 이루어질 때를보기 위해 카세트 변경 및 제어기에 시간 소인 기록을 추가하는 것이 좋습니다. – lmars
AJAX 응답을 보면 500 오류가보고되어 테스트가 실패한 것입니다. 테스트 로그를 보면 다른 세부 정보는 표시되지 않습니다. AJAX 비트는 매 5 초마다 재 시도를 계속하므로 첫 번째 시도에서 올바른 응답을 찾지 못해도 결국 결과가 나타납니다. 카세트없이 요청을하면 VCR은 대개 매우 보컬이기 때문에 카세트 전환이 오류의 원인이라고 생각하지 않습니다. 첫 번째 페이지는 주장의 가치가있는 것입니다. – jmacdonald