10

私はirbを開いて入力しました:

require 'test/unit'

しかし、assert_equalメソッドを使用すると、次のエラーが発生しました: NoMethodError: undefined method 'assert_equal' for main:Object. 「test/unit」を要求した後でも、なぜこれが起こるのですか?

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 に答える