我有一个简单的单元测试:
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:错误提示:错误提示:重复键值违反唯一约束“index_admins_on_email”错误:Key(email)=()已存在。
似乎由于某种原因,测试试图创建一个Devise管理员用户并失败,但我不知道为什么它首先要这样做,甚至不知道如何纠正它。
我在rails控制台上运行了同样的测试,它工作得很好,非常混乱。
有没有人遇到过这种情况,或者知道发生了什么?任何帮助将不胜感激!
2条答案
按热度按时间rryofs0p1#
在我的test_helper.rb中找到了一个
fixtures:all
语句,我还在学习Rails,但感谢阿方索的帮助。xcitsw882#
问题是在
admins.yml
和users.yml
中有两个“相同”的空对象“{}”,在创建第二个对象时抛出Key (email)=() already exists
错误。删除fixtures:all
将停止加载所有fixture,而是删除或注解第二个对象