添加索引到电子邮件列的罪魁祸首unit testing失败

我是设计和导轨的新手,我只是将设计与我的示例应用程序集成在一起。 我注意到在创建用户模型后,我的所有unit testing都失败了。 我试着缩小它,发现即使为user_test.rb生成的断言“真相”也失败了:

 ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: \ column email is not unique: INSERT INTO "users" (... 

一旦我注释掉add_index

 # add_index :users, :email, :unique => true 

…并重新运行rake db:test:load使用ruby -I test test/unit/user_test.rb rake db:test:load并重新运行测试。

有没有人经历过这个?

如果你刚刚生成了设计模型,那么也会生成一个或多或少的内容:

 one: {} # column: value # two: {} # column: value 

此夹具尝试使用相同(不存在)的电子邮件创建两个用户。 替换为:

 one: email: test1@test.com two: email: test2@test.com 

它将修复此错误。

在实际测试之前,必须在测试设置中发生故障。 您可能正在尝试通过固定装置或工厂设置具有相同电子邮件地址的用户。

如果您使用灯具,请确保为每个用户提供不同的电子邮件地址。 如果您正在使用工厂,请使用序列为每个创建的用户生成唯一的电子邮件地址。