【发布时间】:2017-03-25 06:53:27
【问题描述】:
我是红宝石新手!当我运行我的测试脚本时,它会抛出一个异常:
NoMethodError: 未定义方法 `num=' for # 你的意思?数量
为什么找不到?谢谢!
这是我的课
class FizzBuzz
def initialize(num = 0)
@num = num
@fb = 'FizzBuzz'
post_init
end
def post_init
nil
end
def num
@num
end
def fb
@fb
end
def num(value = 0)
@num = value
end
def fb(value = 0)
@fb = value
end
end
这是一个测试用例的例子
def setup
@obj = FizzBuzz.new()
end
#Test multiple of 3 results in instance attribute fb being set to Fizz
def test_fb_three
@obj.num = 42
assert_equal "Fizz", @obj.fb, "Incorrect value for fb.\nExpected\"Fizz\" got \"#{@obj.fb}\""
end
这是堆栈跟踪:
NoMethodError: 未定义方法num=' for #<FizzBuzz:0x33b46a8 @num=0, @fb="FizzBuzz">
Did you mean? num
C:/Users/frase/RubymineProjects/HW/test_hw4.rb:54:intest_fb_three'
(评估):12:在run'
C:/Program Files (x86)/JetBrains/RubyMine 2017.1/rb/testing/patch/testunit/test/unit/ui/teamcity/testrunner.rb:93:instart_mediator'
C:/Program Files (x86)/JetBrains/RubyMine 2017.1/rb/testing/patch/testunit/test/unit/ui/teamcity/testrunner.rb:81:in `start'
编辑:添加测试用例示例,并清理
【问题讨论】:
-
把
def num(value = 0)改成def num=(value = 0)? -
这给了我一个语法错误,它说它需要一个表达式
-
嘿史蒂文。你如何调用
initialize方法?你能发布确切的错误吗?请阅读“如何创建最小、完整且可验证的示例”stackoverflow.com/help/mcve。目前,任何人都无法验证您的问题并帮助您找到解决方案。 -
@JamesMilani 我已经清理了它,添加了堆栈跟踪和测试方法。这些信息足够你帮助我吗?
标签: ruby-on-rails ruby