【问题标题】:RSpec - can't write unknown attribute (enum)RSpec - 无法写入未知属性(枚举)
【发布时间】:2015-01-07 08:16:01
【问题描述】:

模型用户:

class User < ActiveRecord::Base

  enum my_enum: [
    :some_value1,
    #....
  ] 

我还有一个迁移,将my_enum 添加到用户:

def change
  add_column :users, :my_enum, :integer
end

还有 FactoryGirl 的夹具:

FactoryGirl.define do
  factory :user do
    email { Faker::Internet.email }
    password { Faker::Internet.password(10) }
    password_confirmation { password }
    my_enum { nil }
  end 
end

一切正常。但是当我运行测试时,我得到一个错误:

Failure/Error: paid_user = FactoryGirl.create(:user)
     ActiveModel::MissingAttributeError:
       can't write unknown attribute `my_enum`

【问题讨论】:

  • 在 Rails 控制台中使用时该列是否可用?
  • @ArupRakshit,我不应该以某种方式重新加载测试架构吗?
  • 你运行rake db:test:prepare了吗?根据您使用的 Rails 版本,这可能不是必需的,但如果您认为测试架构不是最新的,那可能就是问题所在。
  • 我打算在测试环境中的 Rails 控制台中进行测试。 :-)
  • @mrrogers,标签说明我使用的是什么版本的 Rails。

标签: ruby-on-rails ruby ruby-on-rails-4 rspec


【解决方案1】:

听起来您的测试数据库没有正确迁移。 尝试运行以下命令:

bundle exec rake db:migrate RAILS_ENV=test

.. 然后再次尝试运行 rspec。

【讨论】:

  • 我遇到了与 OP 类似的问题,但这并没有为我解决:-/
  • 我遇到了同样的问题,rspec 不允许我对错误的枚举类型进行失败的测试。但它适用于 nil。
猜你喜欢
  • 2021-01-14
  • 2014-01-11
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多