我正在调试 minitest 中的测试(如果重要的话,可以进行系统测试),并且遇到一些奇怪的行为。在本地运行测试(如下)顺利通过。然而,当在 CI 环境中运行时,我会遇到意想不到的行为。
以下是我正在使用的版本: 红宝石 v2.7.7 导轨 v7.0.4.3 Factory_bot_rails v6.2.0 迷你测试 v5.18.0
class SessionSystemTest < ApplicationSystemTestCase
setup do
@admin = FactoryBot.create :admin
puts "setup admin: #{@admin.inspect}"
@theID = @admin.id
puts "the id: #{@theID}"
end
test "see admin" do
puts "test admin: #{@admin.inspect}"
puts "the id: #{@theID}"
assert_equal @admin.id, @theID
end
end
在本地运行时,一切顺利,并且 put 语句告诉我 @admin 对象在设置和测试中是相同的。
但是,当在 CI 环境(github actions)中运行时,@admin 对象是不同的。 @admin.id 看起来已经增加了。但是 @theID 变量保持不变。
我不知道该如何尝试解决这个问题。我假设设置块应该设置在测试中使用的变量,而不仅仅是定义它们并让测试重新实例化它们。我最初尝试不使用实例变量,但由于 minitest 的工作方式,这不起作用。如果我在设置中保存 ID,我可以查找正确的条目。但这似乎是一个有点棘手的解决方案。
事实证明,问题是我在不同的文件夹中进行了两个具有相同文件名/类名的测试。通过重命名这些文件/类之一,它完全解决了问题。