Синтаксис вывода Ruby minitest assert
Я новичок в minitest и все еще новичок в ruby и действительно устал от попыток google этот вопрос без результата. Я был бы очень благодарен за помощь:
каков точный синтаксис assert_output в ruby minitest?
все, что я нахожу на github или в другом месте, похоже, использует круглые скобки. Тем не менее, я получаю сообщение об ошибке, когда я не использую блок с assert_output, что имеет смысл, поскольку определение этого метода содержит оператор yield.
но я не могу сделай так, как я хочу.
testclass.rb
class TestClass
def output
puts 'hey'
end
end
test_test.rb
require 'minitest/spec'
require 'minitest/autorun'
require_relative 'testclass'
class TestTestClass < MiniTest::Unit::TestCase
def setup
@test = TestClass.new
end
def output_produces_output
assert_output( stdout = 'hey' ) { @test.output}
end
end
что я получаю это:
законченные тесты в 0.000000 с, тестах Нан / с, утверждениях НАН
0 тесты 0 ассерт, 0 сбоев, 0 ошибок, 0 пропускает
что я делаю не так? Это должно быть что-то совершенно очевидное, но я не могу понять. Спасибо за помощь.
1 ответов
для запуска вашего метода тестирования имя метода должно начинаться с test_
. Также, как assert_output
works заключается в том, что блок будет писать в stdout/stderr, и аргументы будут проверены, если они соответствуют stdout/stderr. Самый простой способ проверить это IMO-пройти в регулярном выражении. Так вот как я бы написал этот тест:
class TestTestClass < MiniTest::Unit::TestCase
def setup
@test = TestClass.new
end
def test_output_produces_output
assert_output(/hey/) { @test.output}
end
end