我有一个包含两个测试的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有关更多详细信息,