2013-05-27 2 views
1

최근에 자체 모델 (parent_id 기반) 트리 구조에서 ancestry gem으로 모델을 마이그레이션했으며 new 작업에 실패한 컨트롤러 사양이 있습니다. 문제의 라인은 다음과 같습니다RSpec 레일을 사용하여 속성 메소드 테스트

assigns(:category).should be_a_new(Category).with(parent_id: root_category.id)

가 더 속성 parent_id 없다 불평과 PARENT_ID 지금 방법으로 사실이 아니다 그러나. 위의 라인을 수정하여 새로운 카테고리와 그 둘 모두를 확인하려면 어떻게해야합니까? category.parent_id == root_category.id?

답변

1

'parent_id'대신에 조상이 사용하는 열 이름을 사용하여 기본적으로 'ancestry'인 부모의 ID를 저장할 수 있습니다. 이름을 has_ancestry 클래스 메소드의 옵션으로 설정하여 변경할 수 있습니다 (예 : has_ancestry(ancestry_column: :parent_id). 로 보일 것이다

귀하의 수정 된 테스트 코드는 다음과 같습니다 : "6/8"... 기본 방법은 방법의 테스트를하는 것입니다 :

assigns(:category).should be_a_new(Category).with(ancestry: root_category.id.to_s) 
+0

내가 subsubcategories의 조상 열이 같이 보입니다 것으로 나타났습니다하지만 가능한 경우 반환 값. – janosrusiczki

+0

사실이지만 RSpec :: Rails :: Matchers :: BeANew # with는 실제로 속성과 함께 작동합니다. 나는 당신이 문장을 두 줄'assigns (: category) .should be_a_new (Category)'와'assigns (: category) .parent_id.should eq root_category.id'로 나눠야한다고 생각하거나, 메소드로 작업하는 커스텀 matcher를 작성해야한다. . – dan

+0

빙고! 나는 두 번째 줄을 찾고 있었고 주문 제작자를 작성하는 방법을 살펴볼 것입니다. 감사! – janosrusiczki