【问题标题】:Rails unit testing failing due to Devise admin user由于设计管理员用户,Rails 单元测试失败
【发布时间】: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


【解决方案1】:

在我的 test_helper.rb 中追踪到 fixtures:all 语句,仍在学习我在 Rails 中的方法,但感谢 Alfonso 的建议。

【讨论】:

  • 我遇到了类似的问题,但在我的情况下,填充 Admin 固定值可以解决问题。我看到了错误,因为 Devise 创建了两个夹具,但没有设置任何一个值,因此违反了唯一约束。
猜你喜欢
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多