Ruby расположил многострочные строки с отступом [дубликат]

11
задан Dane O'Connor 9 October 2011 в 02:42
поделиться

3 ответа

Лично я считаю, что heredoc-файлы Ruby с отступом бесполезны, и они должны работать больше как heredoc-файлы с отступом Bash, а также убирать пробелы внутри строки…

В любом случае, есть пара библиотек, которые пытаются справиться с этой ситуацией. Существует множество библиотек, которые пытаются решить эту проблему:

7
ответ дан 3 December 2019 в 07:36
поделиться

Это тест на форматирование или на контент?

Если это тест на форматирование, возможно, ваш тест слишком высокого уровня, и вам следует протестировать класс «Formatter» и вы Возможно, я найду способ протестировать класс таким образом, чтобы сравнение многострочного текста стало бесполезным. А затем вы сможете имитировать класс Formatter, чтобы убедиться, что он получит весь необходимый контент. Например, Formatter может быть классом, имеющим метод add_line , который добавляет "\ n" после каждого заданного аргумента и formatted_string , который возвращает многострочную строку. После того, как вы протестировали класс Formatter, вам просто нужно убедиться, что он правильно вызван. Таким образом, вы отделяете тесты содержания от тестов формата.

Если это проверка содержимого, возможно, вам стоит просто разделить hello_world по строкам, а затем проверить, что первая строка содержит «Hello, world», а вторая - «World Greets you».

Я не думаю, что это хорошая практика - тестировать целый многострочный блок текста.

0
ответ дан 3 December 2019 в 07:36
поделиться

Я не уверен, что любой из них можно назвать «Лучшим методом», но вот четыре варианта

class Hello

  def self.world
"Hello, world!
  World greets you
"
  end
end

require 'test/unit'

class TestHelloWorld < Test::Unit::TestCase

#Define a constant array of multiline strings and test against the array
# see test_hello_4 
# Alternatively store the multi-line strings in a Yaml fixture file and load 
# them into a constant Hash or Array within a setup method
MLINE = [
"Hello, world!
  World greets you
",
"Another multi line string",
  ]

  # Create a method to return the string
  def test_hello_1
    assert_equal Hello.world, hello_world_string()
  end

  # Create the string using embedded newlines
  def test_hello_2
    assert_equal Hello.world, "Hello, world!\n  World greets you\n"
  end

  # if you only have 1 in the test then put it in a DATA section
  def test_hello_3
    assert_equal Hello.world, DATA.read
  end

  def test_hello_4
    assert_equal Hello.world, MLINE[0]
  end

  def hello_world_string
"Hello, world!
  World greets you
"
  end
end

__END__
Hello, world!
  World greets you

Все проходы

Loaded suite test_hello_world
Started
....
Finished in 0.00083 seconds.

4 tests, 4 assertions, 0 failures, 0 errors

Я лично предпочел бы строку со встроенными символами новой строки (Метод 2), если только строка не была очень длинной. в этом случае я бы пошел с разделом ДАННЫЕ.

0
ответ дан 3 December 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: