2012-03-13 101 views
1

我未能谷歌有关此任何事情,所以我把它带到这里。 我在我的模型上覆盖了to_param,将它与id连接起来构成一个更漂亮,更安全的URL。我不知道这应该在我的测试中。这似乎是把它放到路由测试中忽略了这一点。我认为,这将走在模特的规格,虽然: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 ==) 

Model实例......我必须在这里失去了一些东西很明显 - - 也许它刚刚晚了--- 洞察力非常感谢。

回答

2

看起来你错过了to_param之后的一段时间。

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

+0

doh!...是的。那肯定是......它是否是测试URL段落的适当位置/方式?看起来你不想在路由器上这样做,因为你必须存根模型,对吧? – 2012-03-13 18:52:14