2017-03-10 4 views
0

일부 테스트가 끝난 후에 발생하는 오이 테스트에서 비 결정적 오류가 발생합니다. 브라우저/오이 단계가 끝나면 여전히 서버에서 처리중인 요청이 진행 중이며 DatabaseCleaner가 실행되어 문서가 삭제되는 동안에도 계속 실행되는 것처럼 보이므로 서버의 모델에 액세스하려고 할 때 오류가 발생합니다 .오이 - 단계가 끝난 후 서버 오류가 발생했습니다.

내 앱이 사용자를 생성하면 쉽게 액세스 할 수 있도록 인스턴스 변수 @users = []에 저장됩니다. 내가 예외를 잡았을 때, 변수는 아직 @users.first.present? # => true이지만 그 문서는 이미 제거되었다는 것을 알았습니다 @users.first.reload # => nil.

여분의 페이지로드 (어쩌면 Turbolinks/캐싱 재생 트릭)가 없어야하고 문제가 실제로 어디에서 발생하는지 이해하지 못합니다. 오류가 실제로 비 결정적으로 보입니다 (1/3 시간 실패). 코드에서 다른 장소)

는 차라리 Capybara.raise_server_errors == false을 설정하지 않도록 것 비록 그것이 것 당신이 그 대처 방법 비슷한 문제를 가지고 있었고, 만약 내가 궁금 이러한 테스트

가장 가능성이 수정 것들 ...

답변

0

나는 바보 같다. 클릭했을 때 이미지의 더 큰 버전을 표시하는 데 사용 된 "이미지 확대/축소 모드"가 있습니다. 이 모달은 img 속성으로 초기화되었으며, src가 012 (오류 이벤트)를 통해 click() 이벤트를 통해 업데이트되었으므로 src="#"으로 초기화했습니다.

브라우저가 현재 요청과 동일한 경로에서 이미지를 요청하고 있었지만 두 번째 요청의 형식이 HTML/JS 대신 */* 인 것을 알 수 없었습니다. 이 경우 Capybara는 "원본 요청"이후에도 업데이트 된 DOM을받은 후 종종 "이미지 요청"이 진행되는 동안 테스트를 마칩니다.

기타 질문 사항을 따르면서 src="file://null"으로 변경되었습니다.

0

잘 모르겠지만 사용중인 데이터베이스 클리너 전략에 문제가있을 수 있습니다

기본 웹 드라이브 & 데이터베이스 정리 전략은 무엇입니까?

시나리오 나 기능을 사용하기 전에 @javascript 태그를 사용해보십시오. 그것은 데이터베이스 클리너 '트랜잭션'전략 기본값을 사용하는 현재 webdriver로 셀레늄을 사용합니다.

+0

저는 항상 자바 스크립트를 사용하고 있으며 MongoDB를 사용하고 있으므로 트랜잭션 전략 만 삭제됩니다. –