を失敗しました:簡単なRSpecのが私たちのアプリはRFQコントローラでテストインデックスの単純なケース(レール3.1.0)を持って、それがレールにテスト・コントローラインデックスに3.1.0
it "should be successful" do
get 'index'
response.should be_success
end
私達はちょうどことがわかりましたcaseは、index.html.erbのエラーのために失敗しました(ただし、前に渡されました)。コードの行は
<% @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 '
しかし、アプリはインデックスページでSHORT_NAMEを表示するには問題ありません。また、railsコンソールで、r.customer.short_nameはcustomerテーブルから短い名前を返しました。 RFQモデルで
、それが関連性を有している:
belongs_to :customer
コードの行になる場合ケースが通過する:r.customer_id、代わりにr.customer.short_name。問題に関する考えはありますか?ありがとう。
更新:問題が見つかりました。これは、テストデータベースの迷惑メールレコードによって発生します。テストDBをクリーニングした後、問題は消えました。
顧客レコードが作成され、選択のために引き込まれました。 rfqを作成するときは、customer_idだけがrfqレコードに保存されます。お客様のコントローラに変更はありません。 customer_idが正常に取り込まれ、customer_idに関連付けられた顧客の略称が見つかりません – user938363
取得しているエラーは、それがnilであるため顧客を見つけることができないことを示しています。 – TDH
奇妙なことに、customer_idとrspecのパスを見つけることができます。 – user938363