首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Minitest中"def setup“和"setup do”的区别?

在Minitest中"def setup“和"setup do”的区别?
EN

Stack Overflow用户
提问于 2019-08-14 14:17:23
回答 1查看 715关注 0票数 7

在Rails Minitest中调用def setupsetup do有什么区别吗?我一直在使用def setup,但是我突然发现我的特定测试文件的setup没有被调用。当我将其更改为setup do时,它突然又可以工作了(没有更改任何其他内容)。但我发现这很奇怪,为了一致性,我更愿意尽可能地坚持使用def setup。任何建议都是值得感谢的。

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-14 14:54:17

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

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

我找不到太多关于def setupsetup do之间实际区别的信息,但一位blog (你必须相信我的话,因为它是用日语编写的)写道,setup do不仅为那个类调用了设置过程,而且还为它的父类调用了设置过程,这可能解释了为什么我的测试使用setup do (可能它对两个FooTest都称为setup )。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57489057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档