現在フィーチャースペックを書いているのですが、scaffoldを使っている影響なのか、本来走るはずのテストが吐かれます。ググっても解決策が出てこず、足踏み状態です。解決策をご存知の方は、ぜひご教授いただければと思います。
前提条件
Rspecを使用
Rails: 5.2.3
Scaffoldを使用しています。
存在するモデル Company(会社名)、JobOffer(求人情報)
テストしたい流れ
①新たな会社をDB(Companyモデル)に登録する。
②登録された会社名を元に、求人情報(JobOfferモデル)をDBで検索。
(※求人情報はすでにJobOfferに登録済み。)
③会社名が登録されたタイミングで、Jobofferモデルから関連する求人情報のテーブルを取得して表示。
(※求人情報の表示はroot_pathにする。)
④会社名が登録されるまで画面に無かった求人情報が、新たに表示されていることをテストする。
自分で考えたこと
上記の説明ではわかりにくいかもしれませんので、現状書いているものをお見せします。
rb
1require 'rails_helper' 2feature "New Company" do 3 scenario "add a new company" do 4 visit new_company_path #会社名登録画面 5 fill_in 'Name', with: '株式会社サンプル' 6 click_on 'Create new Company' #会社名新規登録 7 8 visit root_path #求人情報一覧 9 expect(page).to have_content '株式会社サンプル' #ここが失敗する 10 end 11end
わからないこと
①表示されているのにも関わらず、会社名が取得できないことに対する解決方法。
②または、そのほかのテスト方法。
説明が下手で伝わりにくいかもしれませんが、どうかご教授いただければと思います。
追記
rb
1#controllers/job_offer_controller.rb 2def index 3 @company = Company.select("name") #会社名を取得 4 @job_offer = JobOffer.where(group: @company) #groupが会社名 5end
rb
1#views/job_offer/index.html.erb 2 3<p id="notice"><%= notice %></p> 4 5<h1>加盟企業の求人一覧</h1> 6 7<table> 8 <thead> 9 <tr> 10 <th>Title</th> 11 <th>Group</th> 12 <th>Content</th> 13 <th>Url</th> 14 <th colspan="3"></th> 15 </tr> 16 </thead> 17 18 <tbody> 19 <% @job_offer.each do |job_offer| %> 20 <tr> 21 <td><%= job_offer.title %></td> 22 <td><%= job_offer.group %></td> 23 <td><%= job_offer.content %></td> 24 <td><a href="<%= job_offer.url %>"><%= job_offer.url %></a></td> 25 <td><%= link_to 'Show', job_offer %></td> 26 <td><%= link_to 'Edit', edit_job_offer_path(job_offer) %></td> 27 <td><%= link_to 'Destroy', job_offer, method: :delete, data: { confirm: 'Are you sure?' } %></td> 28 </tr> 29 <% end %> 30 </tbody> 31</table> <br> 32<%= link_to 'New Company', new_job_offer_path %>
回答1件
あなたの回答
tips
プレビュー