2017-11-01 12 views
0

일부 Rails 코드를 테스트하기 위해 Cucumber + Selenium을 사용하고 있습니다. 이 구성에서 나는 때때로 페이지에 요청하는 첫 번째 단계가 완료되고 두 번째 단계가 실행 된 후 일부 추가 리소스/지연 요청이 브라우저에로드되는 문제가 발생합니다.단계 코드가 오이에서 실행 중일 때 웹 요청을 차단하는 중

코드는 스레드로부터 안전하지 않으며 추가 요청과 다음 단계를 동시에 실행할 수 없습니다.

기능/단계 코드의 특정 섹션이 완료 될 때까지 요청을 받아들이지 못하도록 잠글 수있는 방법이 있습니까? 오이 또는 webrick이 관련 동기화를 노출합니까?

답변

1

당신이 할 수있는 한 가지 일은 여분의 자원에서 무언가를 찾은 후 첫 번째 요청이로드 될 때까지 완료되지 않도록하는 것입니다. 카피 바라 (Capybara)를 사용하면이 일을 잘 수행 할 수 있습니다.

당신이 할 수있는 또 다른 일은 랙 드라이버를 사용하는 것입니다. 그러면 여분의 리소스를로드하는 데 사용하는 자바 스크립트가로드되지 않습니다. 테스트를 위해 추가 리소스가 필요하지 않은 이유는 다음과 같습니다.

+0

불행히도 더 일반적인 것을 필요로합니다. 재사용이 가능한 단계를 원한다면 "사용중인 모든 요청을 처리 할 수 ​​없습니다."라고 말하면됩니다. (이것은 특정 리소스에 의존 할 수 없습니다) 랙 드라이버가 무슨 뜻인지 모르겠습니다. 그것에 대해 자세하게 말 해 주실 수 있나요? – viraptor

+0

레일이있는 쿠킹의 기본 스택은 Cucumber, Capybara and Rack (https://rack.github.io/)입니다. Rack은 루비와 루비 프레임 워크를 사용하는 웹 서버간에 최소한의 인터페이스를 제공합니다. 울타리. Capybara는 Cukes와 브라우저 사이의 중개자 역할을합니다. 랙, 셀렌 또는 여러 다른 드라이버를 사용하여 웹 서버와 통신하도록 Capybara를 구성 할 수 있습니다. Rack은 웹 서버와 직접적으로 가장 간단하고 빠른 대화이지만 자바 스크립트는 지원하지 않습니다. 셀레늄은 훨씬 느리고 자바 스크립트를 지원하며 실제 또는 헤드리스 브라우저를 사용할 수 있습니다. – diabolist