gpt4 book ai didi

ruby - 数据库清理器在 minitest rails 中不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 06:55:59 25 4
gpt4 key购买 nike

如果我使用 rake minitest:controllers 单独运行它们,我的 Minitest Controller 测试工作正常,但是当我运行 rake minitest:all 时,我收到验证失败错误。这是因为电子邮件已经用于模型测试。我使用 DatabaseCleaner 清理数据库,但无法清理数据库。

我的数据库清理器代码:

require "database_cleaner"
DatabaseCleaner.strategy = :transaction

class MiniTest::Rails::ActionController::TestCase
include Devise::TestHelpers

def setup
DatabaseCleaner.start
end

def teardown
DatabaseCleaner.clean
end

最佳答案

简答:

gem install "minitest-around"

长答案:

minitest 中的 before/after 或 setup/teardown 是 NOT Hook ,因此你不能在 minitest 中有多个 before/after 或 setup/teardown,因为它们所做的只是重新定义方法。

要解决这个问题,可以使用minitest-around,它增加了对多个before/aftersetup<的支持/teardownaround,只需将 gem 添加到您的测试组即可:

# put in your Gemfile
gem 'minitest-around', group: :test

关于设置database_cleaner,你可以随意设置,下面是一个设置示例:

# tests/support/database_cleaner.rb
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)

class Minitest::Rails::ActionController::TestCase
def setup
DatabaseCleaner.start
end

def teardown
DatabaseCleaner.clean
end
end

在你的测试文件中:

# tests/your/test/file_test.rb
require 'support/database_cleaner'

# assertions here ...

就是这样,请参阅 Github了解详细信息。

关于ruby - 数据库清理器在 minitest rails 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15675125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com