Почему во время «теста рейка» я вижу результат, отличный от «.»«F» или «E» (ruby 1.9.2p290, Rails 3.0.9)? - PullRequest
0 голосов
/ 07 сентября 2011

Когда я запускал 'rake test', я видел либо '.' или «F» или «E» для каждого теста. Когда все было хорошо, вывод был строкой '.'

Теперь, хотя все мои тесты проходят, я вижу вывод программы в середине строки '.'

Я не уверен, что лучший способ опубликовать вывод, но вот начальное предложение:

perrys-MacBook-Pro:iway perry_mac$ rake test:functionals --trace
** Invoke test:functionals (first_time)
** Invoke test:prepare (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment 
** Execute db:test:purge
** Execute db:test:load
** Invoke db:schema:load (first_time)
** Invoke environment 
** Execute db:schema:load
** Execute test:prepare
** Execute test:functionals
Loaded suite /Users/perry_mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/rake_test_loader
Started
.........................."Welcome joe : "
."Welcome joe : "
."Welcome joe : "
."Welcome joe : "
.................."Welcome bob : "
...........
Finished in 0.998462 seconds.

58 tests, 81 assertions, 0 failures, 0 errors, 0 skips

Test run options: --seed 15796

Строка кода, генерирующая вывод: приложение / просмотров / макеты / application.html.erb

  <div id="nav">
      <% if current_user %>
            <% str= "Welcome " + current_user.username + " : "%>
            <%= p str %>
      <%= link_to "Edit Profile : ", edit_user_path(current_user.id)%>
      <%= link_to "Logout", :logout%>
      <% else %>
      <%= link_to "Register", new_user_path%> |
      <%= link_to "Login", :login %>
      <% end %>
  </div>

msgstr "Welcome joe:" и "Welcome bob:" - ожидаемый вывод программы, увиденный после успешного входа пользователя. Bob и joe - это имена пользователей, созданные в файле фикстур. Я не могу понять, почему сообщения теперь отображаются во время «теста рейка». Я вижу то же самое поведение, когда --trace также не используется. Пожалуйста, прокомментируйте A), почему я вижу некоторые выходные данные программы, а не остальные, и B) Почему я вообще вижу какие-либо?

1 Ответ

2 голосов
/ 07 сентября 2011

Grep для "помещает" или другой код, который записывает в stdout в вашем приложении или тестовом коде.Что-то пропускает данные в стандартный вывод.

Похоже, ваш шаблон представления отправляет содержимое в стандартный вывод, а также представление:

    <%= p str %>

Функция p отправляет строку в стандартный вывод, а затемвозвращает строкуДиректива <% = ERB внедряет значение в отображаемую страницу, поэтому вы одновременно печатали его в stdout / console и отображали его на странице.Это вызвало его появление на консоли при выполнении тестов. </p>

...