Простой Rspec не прошел тестирование индекса контроллера в rails 3.1.0 - PullRequest
0 голосов
/ 16 января 2012

В нашем приложении есть простой пример для тестирования индекса в контроллере rfq (rails 3.1.0), это:

it "should be successful" do
get 'index'
response.should be_success
end

, мы только что обнаружили, что случай не выполнен из-за ошибки в index.html.эрб (это прошло раньше, хотя).Строка кода:

<% @rfqs.each do |r| %>

  <td><%= r.customer.short_name %></td>

<% end %>

Ошибка:

1) RfqsController 'index' should be successful
Failure/Error: get 'index'
ActionView::Template::Error:
undefined method short_name' for nil:NilClass
# ./app/views/rfqs/index.html.erb:28:inblock in _app_views_rfqs_index_html_erb__624673492_53806644'
# c:in each'
# c:ineach'
# ./app/views/rfqs/index.html.erb:18:in _app_views_rfqs_index_html_erb__624673492_53806644'
# ./spec/controllers/rfqs_controller_spec.rb:16:inblock (3 levels) in '

Однако у приложения нет проблем с отображением краткого имени на странице индекса.Также в консоли rails r.customer.short_name вернул короткое имя из таблицы клиентов.

В модели rfq он имеет ассоциацию:

belongs_to :customer

Случай прошел бы, если строкакод становится: r.customer_id, а не r.customer.short_name.Есть мысли по поводу проблемы?Спасибо.

ОБНОВЛЕНИЕ: проблема найдена.Это вызвано нежелательной записью в тестовой базе данных.После очистки тестовой БД проблема исчезла.

1 Ответ

1 голос
/ 16 января 2012

Где вы создаете свою запись rfq.customer? Возможно ли, что вы внесли изменения в модель клиента (добавили новую проверку), чтобы запись не создавалась?

...