rspec - как добавить больше информации в Failure / Error, где это происходит - PullRequest
1 голос
/ 24 апреля 2019

Я хочу вывести из теста кучу информации, если она не пройдёт.

Когда я выдаю информацию, однако она появляется перед секцией Failures: вывода rspec, в отличие от того, где находится конкретная информация о сбое спецификации (номер строки и т. Д.)

Есть ли в спецификации rspec способ показать информацию в самой ошибке, а не по отдельности?

Я думал, что мой крючок, но ...

ВНИМАНИЕ: вокруг хуков нет общего состояния с примером, как до и после крючки делают. Это означает, что вы не можете поделиться экземпляром переменные между крючками и примерами .``

1 Ответ

1 голос
/ 24 апреля 2019

Вы можете использовать лямбду в своем тесте:

  expect(page).to have_text("Doesn't exist"), lambda { "This failed for all sorts of reasons, let me list them out here: #{detailed info}." }

Даст вам вывод как:

    Failures:
  1) Blah blah blah
     Failure/Error: expect(page).to have_text("Doesn't exist"), lambda { "This failed for all sorts of reasons, let me list them out here: nil." }
       This failed for all sorts of reasons, let me list them.
     # ./spec/features/search_results_spec.rb:19:in `block (2 levels) in <top (required)>'

Это может быть немного сложно, если у вас есть код, подобный expect(x).to eq y.count, так как простое нажатие на лямбду дает 2 заданных параметра, но ожидается 0..1. чтобы обойти это использование форматов, таких как

expect(x).to (eq y.count), lambda { "message" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...