rspec,未知属性问题

时间:2011-01-27 14:23:50

标签: ruby-on-rails testing rspec

我正在通过(优秀)railstutorial.org网站上有一个关于rspec的基本问题。

当我在新用户模型上运行以下测试时,我收到“未知属性:用户名”消息和测试失败。

  before(:each) do
   @attr = { :lname_e => "User", :fname_e => "Test", :email => "user@example.com", :username => "testUser" }
  end

  it "should create a new instance given valid attributes" do
    User.create!(@attr)
  end

错误语法是

Failures:
  1) User should create a new instance given valid attributes
     Failure/Error: User.create!(@attr)
     unknown attribute: username
     # ./spec/models/user_spec.rb:11:in `block (2 levels) in <top (required)>'

该字段位于users表(字符串)中,它在模型中为attr_accessible,在控制台中我可以在测试中创建具有完全相同语法的用户。这个“用户名”字段是在创建初始表后通过迁移添加的,是否还需要在此处更新其他文件?

谢谢,

2 个答案:

答案 0 :(得分:29)

您运行了rake db:test:prepare吗?

答案 1 :(得分:20)

您的测试数据库中可能缺少该字段,但该字段存在于您的开发数据库中(这就是控制台正在运行的原因)。

尝试确保您的迁移都是最新的,然后更新测试数据库:

rake db:migrate
rake db:test:prepare