2017-03-08 5 views
0

처음부터 Rails 통합 제품군을 작성하고 있습니다. 이 프로젝트는 일부 비동기 동작을 위해 사용자 지정 Websocket 클라이언트 (기본 ES6 약속 개체)를 사용합니다.Rails 통합 테스트에서 네이티브 ES6 약속이 해결 될 때까지 기다리시겠습니까?

아직 해결되지 않은 약속이 있고 테스트의 다음 단계로 진행하기 전에 자바 스크립트 소스 코드을 수정하지 않고 기다려야한다고 레일스 앱에 알리는 방법이 있습니까? 밖에있는 대부분의 것들은 AJAX 요청이 끝날 때까지 기다리는 것에 중점을 둡니다. 이 기능은 앱의 일부에서 유용하지만 Websocket 명령은 AJAX와는 별개입니다.

답변

1

(AJAX 요청에 대해 수행해야하는 것처럼) 약속이 생성 될 때 어떤 가시적 인 변화가 발생했는지에 대한 주장/기대를 설정해야합니다. 그래서 페이지

assert_text('New text that is added') # non-RSpec 
expect(page).to have_text('New text that is added') # if using RSpec 

에 텍스트를 추가하거나 경우 페이지

assert_selector(:css, '#id_of_new_element') # non-RSpec 
expect(page).to have_css('#id_of_new_element') # RSpec 

등을 카피 바라가/기대/대기에 대한 Capybara.default_max_wait_time까지 다시 시도합니다 주장 제공에 새로운 요소를 추가하는 경우 그들의 조건이 충족 될 것이므로 약속이 페이지에서 어떤 변화가 생길 것인지를 예상한다고 말하면 해결하겠다는 약속을 기다릴 것입니다.