문제

proxy_options에 대해 배웠을 때 나는 그것을 사용하여 모든 이름의 스코프를 테스트하기 시작했습니다. 그러나 나는 단순히 모델에서 해시 조건을 복사하는 것을 발견 했으므로 결과의 정확성을 실제로 테스트하지는 않았습니다.

  po = {:conditions => "foo.created_at <= '#{Time.now.beginning_of_week}'"}
  assert_equal po, Foo.created_this_week

또 다른 접근법은 긍정적이고 부정적인 예를 제시하고 결과에 포함되어 있는지 확인하는 것입니다.

  this_week = Foo.make(:created_at => Time.now)
  last_week = Foo.make(:created_at => 1.week.ago)
  assert Foo.created_this_week.include?(this_week)
  assert !Foo.created_this_week.include?(last_week)

그러나 이것은 경계를 확인하는 데 좋은 일을하지 않으며 상황이 더 복잡해지면 전체 긴 자제 목록이 포함되어 있습니까?. 예상 결과 세트를 내놓고 일치하는지 확인하는 것이 더 좋을 것 같습니다.

  Foo.make(:created_at => 1.week.ago)
  results = [Foo.make(:created_at => Time.now)]
  assert_equal results, Foo.created_this_week

그러나 결과가 제공 한 것과 다른 순서로 반환되면 테스트가 실패 할 수 있습니다. 모델에서 <=>를 구현하여 두 배열을 모두 정렬 할 수 있다고 생각합니다. 그러나 그것은 실제로 불안하지 않은 것 같습니다. 이러한 종류의 검색 방법을 테스트하는 더 좋은 방법이 있습니까? 아니면 적어도 일반적으로 받아 들여지는 방법?

도움이 되었습니까?

해결책

나는 이것을하기 위해 "일반적으로 받아 들여지는 길"이 없다는 결론에 도달했다고 생각합니다.

내 개인적인 솔루션은 간단한 이름이라는 이름의 단순 테스트를 중단하고 Assert 포함을 사용하는 것 같아요? 보다 복잡한 검색 기능을 테스트하는 방법.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top