2012-03-13 3 views
1

나는 이것에 관해서 Google에 아무 것도 실패하지 않았기 때문에 여기에 가져온다. 내 모델에서 to_param을 오버라이드하여 더 정확하고 안전한 URL의 ID와 연결합니다. 이게 내 시험에 있어야했던 곳에서 나는 잃어 버렸어. 그것은 라우팅 테스트에 넣어 같은 지점을 놓친 것 같습니다. 나는 이것이하지만, 모델의 사양에 갈 것이라고 생각 :Rspec testing to_param override

#my model 
class MyModel < ActiveRecord::Base 
    def to_param 
    [id,an_attr.parameterize].join("-") 
    end 
end 
#my model spec 
describe MyModel do 
    mymodel = MyModel.create!(:an_attr => "test attr") 
    mymodel.to_param should == [mymodel.id,"test_attr"].join("-") 
end 

내가 얻을 것은 :

Failure/Error: mymodel.to_param should == [mymodel.id,"test_attr"].join("-") 
    expected: "1-test_atttr" 
     got: #<MyModel id: nil, an_attr: nil, created_at: nil, updated_at: nil> (using ==) 

모델 인스턴스 ... 난 여기에 뭔가를 분명 누락 될 수있어 - 어쩌면 그저 나를 위해 늦었 어. 통찰력이 크게 감사합니다.

답변

2

to_param 이후에 마침표가없는 것 같습니다.

mymodel.to_param.should == [mymodel.id,"test_attr"].join("-")

+0

doh! ... 예. 그건 분명히 ... URL 슬러그를 테스트 할 수있는 적절한 장소/방법이 될까요? 라우터에서 모델을 스텁해야 할 것처럼 보이지 않는 것 같습니다. 맞습니까? –