FactoryGirl在测试后不删除用户

问题描述 投票:1回答:2

我正在运行测试,并且在第一轮测试中,它们全部通过绿色测试。如果我再次运行测试,则某些失败并显示以下消息:

 Failure/Error: @user = Factory :user
     ActiveRecord::RecordInvalid:
       Validation failed: Email has already been taken

我真的很困惑为什么会这样。我以为rspec不会将值推送到数据库。如果清除测试数据库,则此问题已解决,但是在第二轮测试执行中,某些失败并出现相同的错误。

关于如何解决此问题的任何想法?请注意,我最近安装了cancan gem,也许它必须要与之相关?

ruby-on-rails rspec factory-bot
2个回答
2
投票

[Factory Girl不是要删除数据的对象,通常是RSpec(通过use_transactional_fixtures选项)或其他工具,例如database_cleaner

如果未正确清除测试数据库,则建议使用database_cleaner


0
投票

我在某些情况下无法正确清除数据,并且运行database_cleaner来清理数据库的工作非常吸引人(假设您没有预先填充数据)。如果确实需要预先填充的数据,请使用固定装置或其他类似的解决方案将其重置为原始状态。

© www.soinside.com 2019 - 2024. All rights reserved.