【发布时间】:2013-04-05 14:43:31
【问题描述】:
我有一个简单的单元测试:
def test_conversation_without_a_name_is_invalid
conversation = Conversation.new
assert conversation.name.blank?
assert !conversation.valid?
end
失败了:
1) 错误: test_conversation_without_a_name_is_invalid(ConversationTest): ActiveRecord::RecordNotUnique: PG::Error: ERROR: 重复键值 违反唯一约束“index_admins_on_email”详细信息:键 (email)=() 已经存在。
似乎由于某种原因,测试试图创建一个 Devise 管理员用户并失败了,但我不知道它为什么首先尝试这样做,甚至不知道如何纠正它。
我在 Rails 控制台中运行了相同的测试,结果很好,很困惑。
有没有人遇到过这种情况或知道发生了什么?任何帮助将不胜感激!
【问题讨论】:
-
一些事情要尝试: 1. 运行
rake db:test:prepare来清理你的测试数据库。 2. 确保您没有在此测试的setup块上创建管理员。 3.确保您没有使用创建管理员的夹具 -
阿方索,很好的建议。清理数据库没有意义,因为它被重新创建,但是你的第三个建议让我检查 test_helper.rb 并且它是:fixtures :all 已设置。删除后就可以正常使用了!
-
我发现清除 Devise 生成的用户固定装置可以解决所有问题
标签: ruby-on-rails ruby-on-rails-3