다른 테이블의 내용에 따라 동적으로 범위를 추가 한 ActiveRecord 클래스가 있습니다.레일 테스트, 조명기 및 클래스 로딩 순서
(간체 코드 예제)
class Thing < ActiveRecord::Base
Feature.all.each do |feature|
scope feature.name, ->{joins(:feature).where("feature.name = #{feature.name})}
end
end
응용 프로그램의 UI의 또 다른 부분은 검색과 검색의 일환으로 이러한 기능의 범위를 적용 할 수있는 "것 표시"입니다.
이 앱은 실행중인 앱에서 모두 잘 작동합니다.
그러나 테스트에서는 물건이로드되는 순서에 따라 성공한 것으로 보입니다. 때로는 Thing
에 예상 범위가 있으며 다른 시간에는 그렇지 않습니다. 테스트를 실행하기 전에 Feature
클래스와 픽스쳐를 먼저 Feature.count
을 호출하여로드하도록 할 수 있다고 생각했지만 작동하지 않습니다.
클래스/조명기를 강제로로드 할 수있는 방법이 있습니까?
이 항목은 [this] (http://stackoverflow.com/a/28515064/2116518) 또는 [this] (https://sanjusoftware.wordpress.com/2010/12/17/)과 관련이 없습니다. 레일 정착물 -로드 주문 /)? –
@NicNilov 필자는 Postgres를 실행하지 않고 데이터베이스에 외래 키 제약 조건이 없으며 테스트 실행 순서에 따라 테스트가 통과/실패합니다. 따라서 연결된 문제는 적용되지 않습니다. – z5h