2012-03-13 8 views
1

私はこれについて何もgoogleに失敗したので、ここに持っていきます。 私のモデルでto_paramをオーバーロードして、よりきれいで安全なURLのIDと連結しました。私はこれが私のテストであったはずだった場所を失っている。それはルーティングテストにそれを置くようにポイントを逃すようだ。私は、これはしかし、モデルのスペックに行くだろうと思うだろう:Rspecのテストto_paramのオーバーライド

#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スラッグをテストするための適切な場所/方法ですか?あなたがモデルをスタブする必要があるので、ルーターでそれをやりたいのではないでしょうか? –