Почему 'неопределенный метод 'assert_equal'' выбрасывается даже после запроса 'test/unit'

Я открыл irb и ввел:

require 'test/unit'

но когда я использовал метод assert_equal, я получил следующую ошибку: NoMethodError: undefined method 'assert_equal' for main:Object. Почему это происходит даже после запроса «test/unit»?


person Alpha    schedule 07.09.2012    source источник


Ответы (3)


assert_equal определен в подклассах Test::Unit::TestCase, поэтому они доступны только в этом классе. У вас может быть некоторый успех с include Test::Unit::TestCase для загрузки этих методов в текущую область.

Скорее всего, вы могли бы лучше писать свои тесты в коротком файле и запускать их с помощью ruby ./my_file.rb

person Lee Hambley    schedule 07.09.2012

Вы можете использовать встроенное тестирование ошибок ruby

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

ИЛИ

Если вы получаете сообщения об ошибках при попытке использовать утверждения, такие как «NoMethodError: неопределенный метод `assert' для main:Object», добавьте это в начало вашего скрипта:

require "test/unit/assertions"
include Test::Unit::Assertions
person Community    schedule 29.04.2015

Вот как используются утверждения:

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
person Boris Stitnicky    schedule 07.09.2012