10

我打开 irb 并输入:

require 'test/unit'

但是当我使用该assert_equal方法时,出现以下错误:NoMethodError: undefined method 'assert_equal' for main:Object. 为什么即使在需要“测试/单元”之后也会发生这种情况?

4

3 回答 3

11

assert_equal是在 的子类上定义的Test::Unit::TestCase,因此仅在该类中可用。include Test::Unit::TestCase将这些方法加载到当前范围可能会取得一些成功。

更有可能你可以更好地在一个短文件中编写你的测试,并运行它们ruby ./my_file.rb

于 2012-09-07T12:22:14.690 回答
10

您可以在内置的 ruby​​ 错误测试中使用

raise "Message you want to throw when error happens" if/unless "Condition when you want to throw the error "

或者

如果您在尝试使用断言时收到错误消息,例如“NoMethodError: undefined method `assert' for main:Object”,请将其添加到脚本的顶部:

require "test/unit/assertions"
include Test::Unit::Assertions
于 2015-04-29T18:20:54.860 回答
7

这是使用断言的方式:

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
于 2012-09-07T13:23:46.333 回答