我在group_spec.rb
文件中有这个:
describe Group do
it { should have_many(:users) }
end
这在我的user_spec.rb文件中:
describe User do
it { should belong_to(:group) }
end
当我运行测试时,我得到:
Failure/Error: it { should have_many(:users) }
ActiveRecord::StatementInvalid:
PGError: ERROR: relation "users" does not exist
LINE 4: WHERE a.attrelid = '"users"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
在我的group.rb文件中,我有:
has_many :users
在我的users.rb文件中,我有:
belongs_to :group
我觉得我错过了一些显而易见的事情。任何帮助,将不胜感激。谢谢!
约翰
答案 0 :(得分:24)
有同样的问题并在cuvius的评论中使用了解决方案。在这里发帖,以便人们不要错过它!
运行:RAKE_ENV=test rake db:migrate:reset db:test:prepare
以设置测试数据库。
答案 1 :(得分:1)
不幸的是 rake db:test:prepare 在 rails 4 + 中已弃用,所以现在不是最佳解决方案。
我想在您的用户工厂类中写为用户。出现问题的原因是工厂在迁移完成之前加载
所以要解决这个问题:
从
factory :user, class: User do
# ...
end
到
factory :user, class: 'User' do
# ...
end