有没有一种方法可以强制Rails中的测试顺序



我有一个包含两个测试的ideas_test.rb文件

test "create new idea" do
end
test "that Ideas are loaded in the index" do
end

当我运行rails test test/system/ideas_test.rb时,首先执行第二个测试。为什么?有没有办法强制测试顺序?是否在每次测试之间清除数据库?

提前谢谢。

从Rails 5.0开始,ActiveSupport默认配置为以随机顺序运行测试。您可以在测试环境中使用配置设置config.active_support.test_order = :sorted更改默认设置:https://guides.rubyonrails.org/v5.0/configuring.html#configuring-积极支持。

您的测试数据库不会在测试之间自动清除。大多数人使用类似gem的数据库清理器来实现此目的。

测试理论认为测试不应该有依赖性,这意味着当你运行一个测试时,它不应该依赖于另一个测试来通过。

确保我们捕获依赖关系的最好方法是按随机顺序运行测试。

正如其他人所说,你可以强制测试按照提供的顺序运行,但这被认为是一种糟糕的做法,我强烈建议你远离它

更新:

在测试结束时,将丢弃设置(def setup(和测试(test "..." do(中保留的所有固定装置和对象。您可以检查log/test.log($ tail -f log/test.log(以查看它的运行情况。这样可以确保测试不会相互影响。每个测试都以一个干净数据库的假设开始。

读取https://api.rubyonrails.org/v6.1/classes/ActiveRecord/FixtureSet.html有关更多详细信息,

相关内容

  • 没有找到相关文章

最新更新