2012-06-22 3 views
0

FactoryGirl로 시작합니다. 나는 Subscription이라는 모델을 가지고있다. 분명히 몇 가지 계산을 수행하는 'set_price'메소드가 있습니다. 내가 얻을 내 사양을 실행하는 경우FactoryGirl에서 만든 모델 내부에서 다른 모델 쿼리

def set_price 
    base_price = Option.find_by_key(:base_price).value.to_f 
    # […] some calculations 
end 

: 그렇게하기 위해서는, 일부 값에 대한 또 다른 모델을 요구한다 (? 아직)

내가하지 않았기 때문에 매우 논리적이다
NoMethodError: 
      undefined method `value' for nil:NilClass 

Options을 만듭니다.

여기에 FactoryGirl이 적합합니까? 이 경우 Option 조명기를 만들어야합니까? 아니면 그냥 조롱하는거야?

+0

두 모델 사이에': has_many, : through' 관계가 있습니까? –

+0

@SteveRowley nope. 그들은이 특별한 방법 외에도 전혀 관련이 없습니다. –

+0

Ok - 그들이 관련 되었다면 조롱하지 않고도 할 수 있다고 말하고 싶지만 그렇지 않다면 나는 받아 들인 대답에 동의합니다. –

답변

1

데이터베이스에 옵션이 없어 실패합니다. 테스트에서 set_price를 호출하기 전에 옵션 팩토리를 만들 수 있습니다 (이 경우 find_by_key (: base_price)가 공장에서 생성 한 옵션을 반환해야 함). 또는 모의 객체 사용을 말할 수 있습니다.

option = mock_model('Option', :value => 1) 
Option.stub(:find_by_key).and_return(option) 

가짜는 데이터베이스에 손을 대지는 않지만 잠재적으로 더 부서지기 쉽다는 장점이 있습니다.