我打开了irb&输入:
require 'test/unit'
但是当我使用assert_equal
方法时,我收到了以下错误:NoMethodError: undefined method 'assert_equal' for main:Object
。为什么即使在要求“测试/单位”之后也会发生这种情况?
答案 0 :(得分:11)
assert_equal
在Test::Unit::TestCase
的子类上定义,因此仅在该类中可用。使用include Test::Unit::TestCase
将这些方法加载到当前作用域可能会取得一些成功。
您更有可能更好地在短文件中编写测试,并使用ruby ./my_file.rb
答案 1 :(得分:8)
您可以在内置的ruby错误测试中使用
raise "Message you want to throw when error happens" if/unless "Condition when you want to throw the error "
或
如果在尝试使用断言时收到错误消息,例如“对于main:Object”的“NoMethodError:undefined method`assert”,则将其添加到脚本的顶部:
require "test/unit/assertions"
include Test::Unit::Assertions
答案 2 :(得分:6)
这是断言的使用方式:
class Gum
def crisis; -42 end
end
# and as for testing:
require 'test/unit'
class GumTest < Test::Unit::TestCase
def test_crisis
g = Gum.new
assert_equal -42, g.crisis
end
end