Я пишу ruby gem, используя Commander, который использует шаблоны erb и $terminal.color
для части вывода. При написании тестов в RSpec (используя CLI Test) я хотел бы иметь возможность передать параметр к моим командам, чтобы предотвратить раскрашивание, чтобы мои тесты могли сопоставлять простые строки вместо того, чтобы включать форматирование в мои сравнения строк.
В настоящее время я использую:
execute_script('mycommand arg1')
expect(last_execution.stdout).to include("Expected Colorized Output")
Но предположим, что слово "Раскрашено" выделено жирным шрифтом, этот тест не пройдет, потому что он окружен другими символами, поэтому я должен написать свой тест следующим образом.
execute_script('mycommand arg1')
expect(last_execution.stdout).to include("Expected")
expect(last_execution.stdout).to include("Colorized")
expect(last_execution.stdout).to include("Output")
Я хотел бы избежать необходимости разбивать тест таким образом - есть ли способ передать параметр в моем вызове execute_script
в моих тестах или настроить RSpec для удаления форматирования для тестов?
Образец строки, которую видит RSpec
# successfully is bolded here
Command ran \e[1m\e[32msuccessfully\e[0m
Что я хотел бы иметь возможность работать против
expect(last_execution.stdout).to include("Command ran successfully")
include("Expected Colorized Output")
раскрашиванием, напримерinclude(bold(red("Expected Colorized Output")))
--- буквально составив этот синтаксис, но, возможно, что-то в этом роде сработает? - person jefflunt   schedule 04.08.2016last_execution.stdout
в консоль, чтобы вы (и мы) могли видеть, что видит rspec? - person jefflunt   schedule 04.08.2016successfully
, так как это указывает на статус и является непрерывной строкой в раскрашивании. - person jefflunt   schedule 04.08.2016