Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails FactoryGirl测试后未删除用户_Ruby On Rails_Rspec_Factory Bot - Fatal编程技术网

Ruby on rails FactoryGirl测试后未删除用户

Ruby on rails FactoryGirl测试后未删除用户,ruby-on-rails,rspec,factory-bot,Ruby On Rails,Rspec,Factory Bot,我在进行测试,第一轮测试时,他们都通过了绿色测试。如果我再次运行测试,一些测试将失败,并显示以下消息: Failure/Error: @user = Factory :user ActiveRecord::RecordInvalid: Validation failed: Email has already been taken 我真的很困惑为什么会发生这种情况。我认为rspec没有将值推送到数据库。如果清除测试数据库,这是固定的,但是在第二轮测试执行时,一些测试失败

我在进行测试,第一轮测试时,他们都通过了绿色测试。如果我再次运行测试,一些测试将失败,并显示以下消息:

 Failure/Error: @user = Factory :user
     ActiveRecord::RecordInvalid:
       Validation failed: Email has already been taken
我真的很困惑为什么会发生这种情况。我认为rspec没有将值推送到数据库。如果清除测试数据库,这是固定的,但是在第二轮测试执行时,一些测试失败,并出现相同的错误


有没有办法解决这个问题?请注意,我最近安装了cancan gem,也许它与此有关?

Factory Girl不是应该删除数据的,它通常是RSpec(通过
use\u transactional\u fixture
选项)或其他工具,如
database\u cleaner


如果您的测试数据库没有被正确清理,那么我建议您使用。

我曾经遇到过一些事情没有被正确清理的情况,并且运行
rake db:test:prepare
来清理数据库非常有效(假设您没有预填充数据)。如果您确实需要预填充的数据,请使用fixture或其他类似解决方案重置为原始状态。

我将尝试使用database\u cleaner。我确实有use_transactional_fixtures=true-tho。这个选择不好吗?