gpt4 book ai didi

ruby-on-rails - Ruby on Rails 2.3.8 : Testing: Instance Variable Nil, 何时在类顶部声明?

转载 作者:行者123 更新时间:2023-11-28 21:14:36 24 4
gpt4 key购买 nike

所以..这是我的单元测试文件的顶部。

class ObjectTest < ActiveSupport::TestCase
@user = -1

失败的测试(也是第一个使用@user的)

test "for detection of first content" do
puts "+++++++++++++++++++++++++++++ #{@user.name}"

这是我得到的错误

NoMethodError: undefined method `name' for nil:NilClass

现在,我知道数字不能有任何属性,如 .name.. 但我正在尝试解决与尝试获取整数名称无关的问题。问题是,当测试开始时,在我的测试文件中任何地方定义的实例变量立即变为 nil —— 正如您所知,测试的实际内容并不重要,@user 中的数据不知何故消失了。 =\

最佳答案

类实例变量有点奇怪,我没有经常使用它们,但如果我正确理解它们,它们就存在于类本身,并且只能在类方法中使用 @ 符号访问 - 所以你会当您在实例方法中时,必须以 ObjectTest.userself.class.user 访问 @user,否则 Ruby 会寻找 < em>instance 实例变量 在实例方法中。换句话说,在类函数中,您可以引用@user,但在实例函数中,Ruby 正在寻找实例 上的@user 变量。 here是一个似乎展示了这种行为的页面。

由于类变量(例如 @@user)使用完全不同的语法,它们不应显示这种范围冲突行为 - 您可以在两者中使用 @@user类和实例方法。

关于ruby-on-rails - Ruby on Rails 2.3.8 : Testing: Instance Variable Nil, 何时在类顶部声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6429211/

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