1
현재 시간이 html로 삽입되었는지 확인하는 데 문제가 있습니다 (예 : time_ago
과 자바 스크립트 사용). Rspec 요청 테스트의 경쟁 조건
현재 유닉스 시간 (시대)
이 같은이 경우, 주어진 html 요소의 데이터 데이터 속성에 렌더링 :<a href="/somewhere" data-last-points-awarded-at="1331606458">Something Happend</a>
하지만 내 테스트 실행 : 실행시
recipe = Factory(:recipe, name: "Apple Pie", user: @user)
visit some_path
time_in_layout = find('a[data-last-points-awarded-at]')['data-last-points-awarded-at']
current_time = Proc.new { Time.now }.call.to_i.to_s
time_in_layout.should eql(current_time)
을 내 테스트는 실패하지만 ... 단지 겨우 :
Failure/Error: time_in_layout.should eql(current_time)
expected: "1331606459"
got: "1331606458"
(compared using eql?)
모든 것이 잘되고, 테스트는 거의 방법은 실제로 그것을 그러나 일하고 싶지 proc 시간이 두 번째 나중에 시간을 반환합니다, 어떻게이 문제를 해결할 수 있습니까? 시험 시작시에 시간을 잠 그려면 어떻게 할 수 있습니까? 나는 그런 일을 할 수 있습니까?
멋집니다! 단 한 번의 시험만으로도 전체 보석일까요? 그 잔인한가요? 그것은 나의 유일한 선택일지도 모른다. –
: 테스트 환경에서만로드 할 수 있지만 모든 보석에 약간의로드 시간이 추가되고주의하지 않으면 Time 클래스를 망쳐 놓으면 다른 테스트에 예기치 않은 결과가 발생할 수 있습니다. –
더 나은 방법은 전화를하기 전에 시간을 조롱하는 것입니다. 단위 테스트 레벨에서 더 잘 작동하지만 단위 수준에서 테스트하면 요청 수준에서 다른 시간 동안 테스트 할 수 있습니다 (시간이 표시되고 적당한 범위 내에 있음). –