2011-08-18 4 views
1

저는 일대 다 관계가 있습니다. 한 그룹에는 많은 서버가 있습니다. 이 관계를 테스트하기 위해 필자는이 테스트를 작성하지만 필자는 줄을 uncomple했을 때만 작동한다. 왜?Ruby on rails, 단위 테스트 오류

test 'Group can include server' do 
    group = groups(:default) 
    group.servers << servers(:default) 
    # Test work, when I uncomment this line: 
    # assert_instance_of Array, group.servers 
    group.save 
    assert_instance_of Server, group.servers.first 
end 
+0

해당 줄 * 주석 * 또는 * 주석 처리를 제거 할 때 작동합니까? * this * 코드가 작동합니까? – Mischa

+0

주석 처리를 제거 할 때. –

답변

1

group.serversArray되지 않기 때문에. 그것은 하나처럼 행동하지만 실제로는 ActiveRecord::Association::HasManyAssociation의 인스턴스입니다. 그 조상 클래스 (ActiveRecord :: Association :: AssociationProxy)는 실제로 class을 기본 객체로 통과하므로 group.servers.classArray을 제공하지만 실제로는 하나가 아닙니다.

편집 :이 메모는 귀하의 실패 원인이라고 확신하지만 완전한 의미는 아닙니다. 내 테스트 앱에서 group.servers.instance_of? Arraytrue이고 sourceassert_instance_of이라는 의미입니다.