To jest pytanie dotyczące najlepszej praktyki. Są na to oczywiste sposoby, żadne z nich nie wydaje się całkiem słuszne.Struny wielowierszowe z nacięciem w rublu
Bardzo często muszę przetestować, że powstaje ciąg wielowierszowy. Zwykle łamie wcięcia czyni wszystko wyglądać bałagan:
class TestHelloWorld < Test::Unit::TestCase
def test_hello
assert_equal <<EOS, hello_world
Hello, world!
World greets you
EOS
end
end
Z <<-
mogę wciąć tu marker doc, ale nie pozbawić wcięcia wewnątrz heredoc, to nadal wygląda okropnie.
class TestHelloWorld < Test::Unit::TestCase
def test_hello
assert_equal <<-EOS, hello_world
Hello, world!
World greets you
EOS
end
end
To pozwala mi na wcięcie, ale czytelność cierpi na linii testowej. Ten gsub
naprawdę nie jest tutaj właściwy.
class TestHelloWorld < Test::Unit::TestCase
def test_hello
assert_equal <<-EOS.gsub(/^ {6}/, ""), hello_world
Hello, world!
World greets you
EOS
end
end
Czy istnieje sposób na przetestowanie takich wielowierszowych łańcuchów, które są naprawdę czytelne?
Te dwie odpowiedzi: http://stackoverflow.com/a/3772911/17305 http://stackoverflow.com/a/5638187/17305 może być alternatywą dla przyjętego odpowiedź, jeśli chcesz uniknąć zależności zewnętrzne . Przenoszą 'gsub' poza pole widzenia, łatając' String', pozostawiając tekst tutaj bardziej czytelny. – Synoli