capybara에서 문제가 발생하기 때문에 요청 테스트가 실패합니다. capybara가 계속 진행하기 전에 Ajax 이벤트가 완료되기를 기다리지 않기 때문입니다.Capybara 아약스 경쟁 조건
Google에서 다음과 같이 사용해야 함을 나타낼 수 있습니다. 하지만 작동하지 않습니다.
이 문제가 있음을 입증하려면 ajax 호출 후 sleep 문을 넣어 실패한 테스트를 해결할 수 있습니다. 이것은 적절한 실행 지연이 테스트를 실행하는 시스템의 속도에 따라 달라 지므로 어떤 나쁜 습관이라도 해킹당하는 것처럼 보입니다. 그리고 적절하게 큰 값을 선택하면 Ajax 작업이 많은 테스트 스위트 실행 속도가 심각하게 느려집니다.
실패/통과 테스트의 예는 다음과 같습니다.
it "should be able create a new todo item", :js, :resynchronize, :focus do
# Visit new action
visit new_todo_list
# Fill in the name
fill_in "#name", "test list"
# Click on add item to launch inline popup
find('a.add-item').click
within '#new_item' do
fill_in 'todo_item_description', :with => 'custom item'
# Run ajax action to add currrent item
find('.btn').click
end
sleep(1)
# Save
find('a.save').click
page.should have_content('test list')
page.should have_content('custom item')
end
이 카피 바라의 버그인가, 아니면 내가 뭔가 잘못하고있는 중이 야 : 저장에 클릭하기 전에 수면 page.should have_content에 ('사용자 정의 항목을') 실패/통과의 차이를 만드는가? 어떤 도움
감사합니다 ...
감사합니다, 즉 임의의 수면보다 훨씬 낫다! – Chris