🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Q&A

解決済

1回答

386閲覧

フィーチャースペックのエラーを解決したい

Tsuyoponpon

総合スコア33

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

0グッド

1クリップ

投稿2019/09/30 12:39

編集2019/10/01 13:52

現在フィーチャースペックを書いているのですが、scaffoldを使っている影響なのか、本来走るはずのテストが吐かれます。ググっても解決策が出てこず、足踏み状態です。解決策をご存知の方は、ぜひご教授いただければと思います。

前提条件

Rspecを使用
Rails: 5.2.3
Scaffoldを使用しています。
存在するモデル Company(会社名)、JobOffer(求人情報)

テストしたい流れ

①新たな会社をDB(Companyモデル)に登録する。

②登録された会社名を元に、求人情報(JobOfferモデル)をDBで検索。
(※求人情報はすでにJobOfferに登録済み。)

③会社名が登録されたタイミングで、Jobofferモデルから関連する求人情報のテーブルを取得して表示。
(※求人情報の表示はroot_pathにする。)

会社名が登録されるまで画面に無かった求人情報が、新たに表示されていることをテストする。

イメージ説明
※写真は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 %>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2019/09/30 20:41

root_path の controllerを質問に追記してください
Tsuyoponpon

2019/10/01 13:53

winterboum さん 返信が遅くなりまして申し訳ございません。 質問に情報の追記をさせていただきました。 お手数ですが、ご確認をよろしくお願いいたします。
winterboum

2019/10/01 14:00

間違えた、 new_company_path のcontroller と それを発行する view が必要です
Tsuyoponpon

2019/10/03 12:54

winterboum さん 返信が遅くなり申し訳ございません。 誠に勝手ながらもう少し自分で勉強をしてみようと思いますので、一旦解決とさせていただきます。 ご協力、誠にありがとうございました。
guest

回答1

0

自己解決

解決作をもう少し模索してみたいと思いますので、
一旦解決にさせていただいた、解決したら自己解決の方法を投稿したいと思います。

ご協力いただいたみなさま、誠にありがとうございました、。

投稿2019/10/03 12:56

Tsuyoponpon

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問