起きている現象と実現したいこと
独学でRspecでテストを書いています。
エラーが発生しており、おそらくRspecの書き方自体が間違っているのではないかと思うのですが、修正箇所が分からず、教えていただきたいです。
エラー内容(ターミナル)
Failures: 1) 投稿機能 一覧表示機能 ユーザーAがログインしている時 ユーザーAが作成したタスクが表示される Failure/Error: expect(page).to have_title '最初の投稿' expected "Microposts" to include "最初の投稿" [Screenshot]: tmp/screenshots/failures_r_spec_example_groups_nested_nested_a_ユーザーaが作成したタスクが表示される_916.png # ./spec/system/microposts_spec.rb:22:in `block (4 levels) in <top (required)>' Finished in 7.15 seconds (files took 3.36 seconds to load) 1 example, 1 failure Failed examples: rspec ./spec/system/microposts_spec.rb:20 # 投稿機能 一覧表示機能 ユーザーAがログインしている時 ユーザーAが作成したタスクが表示される
microposts_spec.rb
require 'rails_helper' describe '投稿機能', type: :system do describe '一覧表示機能' do before do #ユーザーAを作成しておく user_a = FactoryBot.create(:user, name:'ユーザーA', email: 'a@gmail.com') #作成者がユーザーAであるタスクを作成しておく FactoryBot.create(:micropost, title: '最初の投稿', user: user_a) end context 'ユーザーAがログインしている時' do before do #ユーザーAでログインする visit login_path fill_in 'メールアドレス', with: 'a@gmail.com' fill_in 'パスワード', with: 'password' click_button 'ログイン' end it 'ユーザーAが作成したタスクが表示される' do #作成済みの投稿の名称が画面上に表示されていることを確認 expect(page).to have_title '最初の投稿' end end end end
投稿一覧表示のページ
<%# 投稿一覧を表示するページです %> <body class="after_login_back"> <%= render 'microposts/searching', q: @q %> <% @microposts.each do |micropost| %> <%= render 'microposts/microposts', micropost: micropost %> <% end %> <%= link_to new_micropost_path, class: 'new_button' do%><i class="fas fa-edit"></i><%end%> <%= paginate @microposts%> <%= render 'layouts/return' %> </body>
_microposts.html.erb
<div class="card micropost_card col-sm-9"> <div class="posts"> <div class="card_left"> <% if micropost.image? %> <%= image_tag micropost.image.url, class:"micropost_image" %> <% else %> <%= image_tag 'no_image.png', class:"micropost_image" %> <% end %> </div> <div class="card_center"> <%= link_to micropost.title, micropost_path(micropost), class: 'micropost_title' %> <table class="table"> <tr> <td>日程 :</td> <td><%= micropost.day %></td> </tr> <tr> <td>場所 :</td> <td><%= micropost.place %></td> </tr> <tr> <td>募集人数:</td> <td><%= micropost.number %></td> </tr> </table> </div> <div class="card_right"> <% if micropost.joins.count < micropost.number %> <% if current_user.joining?(micropost) %> <%= form_with(model: current_user.joins.find_by(micropost_id: micropost.id), local: true, method: :delete) do |f| %> <%= hidden_field_tag :micropost_id, micropost.id %> <%= f.submit '参加中', class: 'side_btn_delete' %> <% end %> <% else %> <%= form_with(model: current_user.joins.build, local: true) do |f| %> <%= hidden_field_tag :micropost_id, micropost.id %> <%= f.submit '参加', class: 'side_btn' %> <% end %> <% end %> <% else %> <P class="side_btn_fin">定員到達</P> <%end%> <% if current_user.liking?(micropost) %> <%= form_with(model: current_user.likes.find_by(micropost_id: micropost.id), local: true, method: :delete) do |f| %> <%= hidden_field_tag :micropost_id, micropost.id %> <%= f.submit '気になる済', class: 'side_btn_delete' %> <% end %> <% else %> <%= form_with(model: current_user.likes.build, local: true) do |f| %> <%= hidden_field_tag :micropost_id, micropost.id %> <%= f.submit '気になる', class: 'side_btn' %> <% end %> <% end %> <% if current_user == micropost.user %> <%= link_to "編集", edit_micropost_path(micropost) ,class: 'side_btn' %> <%= link_to "削除", micropost, method: :delete, data: {confirm: "本当に削除しますか?"}, class: 'side_btn' %> <% end %> </div> </div> </div>
micropostsコントローラーindexアクション
def index @q = Micropost.where("day >?", Date.today).order(created_at: :desc).ransack(params[:q]) @microposts = @q.result(distinct: true).page(params[:page]).per(10) end
Factory.Botの内容
FactoryBot.define do factory :micropost do content {'テストを書く'} # image {'test.png'} user end end
FactoryBot.define do factory :user do name {'テストユーザー'} email {'test@example.com'} image {'profile.png'} password {'password'} profile {'テストです'} end end
試してみたこと
・expected "Microposts" to include "最初の投稿" を記述してみる
・pageをmicropostsに変えてみる
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/27 11:42
2020/08/27 11:44
2020/08/27 13:20 編集
2020/08/27 23:22