Ruby/Rails/Riot программно получает доступ к результатам теста

Я использую Riot ( https://github.com/thumblemonks/riot) для тестирования, хотя мы могли бы использовать что-то еще.

Я получаю тестовый вывод, как это:

> ruby my_test_file.rb

Running a test
  + something works
  + something else works
  - something failed

Я хотел бы получить программный доступ к этой информации. Что-то вроде:

test = TestClass.load("my_test_file.rb")
result = test.run
result.errors # some array

1 ответ

Решение

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

Суть этого заключается в оценке тестовых файлов и получении контекста из оцениваемого теста:

Riot.alone! # so Riot doesn't automatically run the tests

["/path/to/test/file"].each do |test_file|
  eval(IO.read(path), binding, test_file) # load test file

  Riot.root_contexts.each do |context|
    reporter = MyReporter.new
    context.run reporter
    # do something cool with reporter results   
  end

  Riot.root_contexts.clear # clean out root_contexts so it's clean for the next run
end

Где MyReporter - ваша реализация, которая обрабатывает результаты тестов на прохождение / провал. См. https://github.com/thumblemonks/riot/blob/master/lib/riot/reporter.rb

Другие вопросы по тегам