質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby

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

RSpec

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

Ruby on Rails

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

解決済

request specで投稿内容が表示されない

F.Iku
F.Iku

総合スコア3

Ruby

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

RSpec

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

Ruby on Rails

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

1回答

0評価

0クリップ

194閲覧

投稿2022/01/09 07:35

Request specを書いています。
つぶやき一覧ページに遷移して、「つぶやき一覧ページのリクエストが成功していること」、「つぶやきの内容を取得していること」をテストしたいです。
現状、「つぶやき一覧ページのリクエストが成功していること」のテストは通りましたが、「つぶやきの内容を取得していること」のテストが通りません。

requestspec

require 'rails_helper' RSpec.describe "Sessions", type: :request do describe "GET users/:id" do let(:test_user) { create(:user) } let(:test_post) { create(:post, user: test_user) } it "つぶやき一覧ページのリクエストが成功していること" do get posts_path expect(response).to have_http_status(200) end it "つぶやきの内容を取得していること" do get posts_path expect(response.body).to include test_post.content end end end

デバックしてみましたが、test_postはきちんと作成されていますし(下記ログ↓)、

terminal

[2] pry(#<RSpec::ExampleGroups::Sessions::GETUsersId>)> test_post => #<Post:0x000055ff9b0b1800 id: 1, content: "わーい", created_at: Sun, 09 Jan 2022 16:19:07.862336000 JST +09:00, updated_at: Sun, 09 Jan 2022 16:19:07.862336000 JST +09:00, user_id: 1>

response.bodyを見てみても(下記ログ↓)、class=\"postwrapper\"class=\"postindex\"といったつぶやき一覧ページ特有のdivタグが出てきたのできちんとつぶやき一覧ページに遷移できていると思います。

terminal

[1] pry(#<RSpec::ExampleGroups::Sessions::GETUsersId>)> response.body "...(省略)...<body>\n <div class=\"postwrapper\">\n <div>\n </div>\n <div class=\"postindex\">\n </div>\n \n</div>\n\n </body>\n</html>\n"

自分としては、つぶやきが作成されているのにresponse.bodyでつぶやきの内容が確認できないのが不思議です。
質問としてはなぜtest_postは作成されているのにテストが通らないのでしょうか。またどうすればテストが通るのかご教示いただければ嬉しいです。
何卒よろしくお願い申し上げます。

index

<div class="postwrapper"> <div> <% if flash[:notice] %> <%= flash[:notice] %> <% end %> </div> <div class="postindex"> <% @posts.each do |post| %> <div class="post"> <div class="postleft"> <div class="postleftsub"> <div class="postimg"> <img src="<%= "/user_images/#{post.user.image_name}" %>"> </div> <p class="postusername"> <%= link_to(post.user.name, "/users/#{post.user.id}") %> </p> </div> <p class="today"> <%= l post.created_at %> </p> <p class="postedit"> <% if post.user.id == @current_user.id %> <%= link_to("編集", "/posts/#{post.id}/edit") %> <% end %> </p> </div> <div class="postright"> <p class="postcontent"> <%= post.content %> </p> <div class="likewrapper"> <% @likes_count = Like.where(post_id: post.id).count %> <%= @likes_count %> <% if Like.find_by(user_id: @current_user.id, post_id: post.id) %> <div class="like"> <%= button_to("/likes/#{post.id}/destroy", {method: :delete, id: "spec_like"}) do %> <img src ="/images/like2.png"> <span class="otsukare">おつかれさま!</span> </div> <% end %> <% else %> <div class="like"> <%= button_to("/likes/#{post.id}/create", method: :post, id: "spec_nolike") do %> <img src ="/images/like.png"> </div> <% end %> <% end %> </div> </div> </div> <% end %> </div> <%= paginate @posts %> </div>

参考にさせていただいたデバック方法です。
rspecのrequest specでうまくいかない時の原因調査のちょっとしたハック

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby

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

RSpec

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

Ruby on Rails

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