gpt4 book ai didi

ruby-on-rails - Minitest 中 "def setup"和 "setup do"之间的区别?

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

在 Rails Minitests 中调用 def setupsetup do 有什么区别吗?我一直在使用 def setup,但我突然发现我的特定测试文件的 setup 没有被调用。当我将其更改为 setup do 时,它突然又起作用了(没有更改任何其他内容)。但我发现这很奇怪,如果可能的话,我宁愿对所有内容都使用 def setup,以保持一致性。任何建议表示赞赏。

require 'test_helper'
require_relative '../../helpers/user_helper'

class FooTest < ActiveSupport::TestCase
include UserHelper

# This method doesn't get called as-is.
# But it does get called if I change the below to `setup do`.
def setup
# create_three_users is a UserHelper method.
create_three_users
@test_user = User.first
end


test 'should abc' do
# Trying to call @test_user here returned nil.
end
end

最佳答案

还有另一个测试文件,类定义为 class FooTest < ActiveSupport::TestCase .我想有人通过复制原始的 FooTest 创建了它文件,忘记更改名称。

简而言之,其他FooTest的设置方法已经被调用而不是这个方法。巧合的是,另一个FooTest也一直在调用相同的create_three_users在设置中,这就是为什么我直到尝试分配实例变量但失败后才意识到这一点。

我找不到太多关于 def setup 之间实际差异的信息和 setup do , 但一个 blog (你必须相信我的话,因为它是用日语写的)写道 setup do不仅调用该类还调用其父类的设置过程,这可以解释为什么我的测试使用 setup do 工作。 (也许它为两个 setup 都调用了 FooTest)。

关于ruby-on-rails - Minitest 中 "def setup"和 "setup do"之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57489057/

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