FactoryBot实例变量在CI环境中的Minitest中设置后重新实例化

问题描述 投票:0回答:1

我正在调试 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,我可以查找正确的条目。但这似乎是一个有点棘手的解决方案。

github-actions factory-bot minitest ruby-on-rails-7
1个回答
0
投票

事实证明,问题是我在不同的文件夹中进行了两个具有相同文件名/类名的测试。通过重命名这些文件/类之一,它完全解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.