Rspec测试to_param覆盖

时间:2012-03-13 05:55:14

标签: ruby-on-rails ruby-on-rails-3 rspec2

我未能对此进行谷歌搜索,所以我把它带到这里。 我已经在我的模型上覆盖了to_param,将它与id连接起来,以获得更漂亮,更安全的URL。我不知道这应该在我的测试中。似乎把它放到路由测试中就错过了这一点。我认为这会出现在模型的规格中:

#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 ==)

一个模型实例......我必须在这里找到一些明显的东西 - 也许它对我来说已经很晚了--- 非常感谢。

1 个答案:

答案 0 :(得分:2)

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

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