Rails有一个Rspec测试告诉我未初始化的常量

时间:2013-01-23 23:26:55

标签: ruby-on-rails ruby rspec constants shoulda

我在两个模型之间有一个关系。这种关系有效,但问题是,当我用shoulda匹配器编写Rspec测试时,我收到错误。

 Failure/Error: it { should have_one(:userresetpassword)}
 NameError:
   uninitialized constant User::Userresetpassword

user.rb

中的代码
has_one :userresetpassword

我的rspec测试

describe "associations" do
  it { should have_one(:userresetpassword)}
end

1 个答案:

答案 0 :(得分:2)

您的关联名称错误,无论是rails,shoulda-matchers还是两者都难以从中猜出类名。

你有两个选择。首先,最好将关联重命名为常规:

has_one :user_reset_password

这将允许rails正确猜出类名UserResetPassword

其次,您可以简单地删除猜测并告诉rails类名是什么。如果您不能或者非常不想更改关联名称,这是唯一的选择。

has_one :userresetpassword, :class_name => "UserResetPassword"