Это лучший практический вопрос. Есть очевидные способы сделать это, но ни один из них не кажется совершенно правильным.
Довольно часто мне нужно проверить, что создается несколько многострочных строк. Обычно это прерывает отступы, и все выглядит как беспорядок:
class TestHelloWorld < Test::Unit::TestCase
def test_hello
assert_equal <<EOS, hello_world
Hello, world!
World greets you
EOS
end
end
С <<-
я могу отступать здесь маркер doc, но он не разделяет отступы внутри heredoc, он по-прежнему выглядит ужасно.
class TestHelloWorld < Test::Unit::TestCase
def test_hello
assert_equal <<-EOS, hello_world
Hello, world!
World greets you
EOS
end
end
Это позволяет мне отступать, но читаемость тестовой строки страдает. Этот gsub
действительно не чувствует себя здесь.
class TestHelloWorld < Test::Unit::TestCase
def test_hello
assert_equal <<-EOS.gsub(/^ {6}/, ""), hello_world
Hello, world!
World greets you
EOS
end
end
Есть ли способ проверить такие многострочные строки, которые действительно читаемы?