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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

5121閲覧

「rails」Rspecで表示されたエラー内容について

runban

総合スコア152

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/10/22 04:08

railsにて、投稿一覧と投稿フォームを同じページに表示できるようなアプリを制作しています。
一通り完成いたしましたので、RSpecにて内容のチェックをしたところ、下記のエラー内容が表示されました。

Error

1Book モデルに関するテスト 2 実際に保存してみる 3 有効な投稿内容の場合は保存されるか 4 空白のバリデーションチェック 5 titleが空白の場合にバリデーションチェックされ空白のエラーメッセージが返ってきているか 6 bodyが空白の場合にバリデーションチェックされ空白のエラ ーメッセージが返ってきているか 7 titleを空白で投稿した場合に画面にエラーメッセージが表示されているか 8 エラーメッセージは正しく表示されるか 9 bodyを空白で投稿した場合に画面にエラーメッセージが表示さ れているか 10 エラーメッセージは正しく表示されるか 11 12投稿のテスト 13 トップ画面(root_path)のテスト 14 表示の確認 15 トップ画面(root_path)に一覧ページへのリンクが表示されているか 16 root_pathが"/"であるか 17 一覧画面のテスト 18 一覧の表示とリンクの確認 19 bookの一覧表示(tableタグ)と投稿フォームが同一画面に表示されているか 20 bookのタイトルと感想を表示し、詳細・編集・削除のリン クが表示されているか 21 Create Bookボタンが表示される 22 投稿処理に関するテスト 23 投稿に成功しサクセスメッセージが表示されるか 24 投稿に失敗する (FAILED - 1) 25 投稿後のリダイレクト先は正しいか 26 book削除のテスト 27 bookの削除 28 詳細画面のテスト 29 表示の確認 30 本のタイトルと感想が画面に表示されていること 31 Editリンクが表示される 32 Backリンクが表示される 33 リンクの遷移先の確認 34 Editの遷移先は編集画面か 35 Backの遷移先は一覧画面か 36 編集画面のテスト 37 表示の確認 38 編集前のタイトルと感想がフォームに表示(セット)されて いる 39 Update Bookボタンが表示される 40 Showリンクが表示される 41 Backリンクが表示される 42 リンクの遷移先の確認 43 Showの遷移先は詳細画面か 44 Backの遷移先は一覧画面か 45 更新処理に関するテスト 46 更新に成功しサクセスメッセージが表示されるか 47 更新に失敗しエラーメッセージが表示されるか (FAILED - 2) 48 更新後のリダイレクト先は正しいか 49 50Failures: 51 52 1) 投稿のテスト 一覧画面のテスト 投稿処理に関するテスト 投稿に失敗する 53 Failure/Error: expect(page).to have_content 'error' 54 expected to find text "error" in "Books\nTitle Body hoge body Show Edit Destroy\nNew book\nTitle\nTitle can't be blank\nBody\nBody can't be blank" 55 56 57 58 # ./spec/system/books_spec.rb:64:in `block (4 levels) in <main>' 59 60 2) 投稿のテスト 編集画面のテスト 更新処理に関するテスト 更新に失敗しエラーメッセージが表示されるか 61 Failure/Error: expect(page).to have_content 'error' 62 expected to find text "error" in "Editing Book\nTitle\nTitle can't be blank\nBody\nBody can't be blank\nShow Back" 63 64 65 66 # ./spec/system/books_spec.rb:156:in `block (4 levels) in <main>' 67 68Finished in 0.72519 seconds (files took 1.06 seconds to load) 6928 examples, 2 failures 70 71Failed examples: 72 73rspec ./spec/system/books_spec.rb:62 # 投稿のテスト 一覧画 面のテスト 投稿処理に関するテスト 投稿に失敗する 74rspec ./spec/system/books_spec.rb:152 # 投稿のテスト 編集画面のテスト 更新処理に関するテスト 更新に失敗しエラーメッセ ージが表示されるか

投稿もエラーメッセージの表示も現状完成している下記コードにて作動するので問題ないと思っていたのですが、Rspecにて表示されたエラー内容はどのようなことが原因なのかをご教示いただけませんでしょうか。
何卒、よろしくお願いいたします。

↓ railsのコントローラーです

RubyOnRailsController

1class BooksController < ApplicationController 2 def top 3 end 4 5 def index 6 @books = Book.all 7 @book = Book.new 8 end 9 10 def create 11 @books = Book.all 12 @book = Book.new(book_params) 13 if @book.save 14 flash[:notice] = "Book was successfully created" 15 redirect_to book_path(@book) 16 else 17 render action: :index 18 end 19 end 20 21 def show 22 @book = Book.find(params[:id]) 23 end 24 25 def edit 26 @book = Book.find(params[:id]) 27 end 28 29 def update 30 @book = Book.find(params[:id]) 31 if @book.update(book_params) 32 flash[:notice] = 'Book was successfully updated.' 33 redirect_to book_path(@book) 34 else 35 render action: :edit 36 end 37 end 38 39 def destroy 40 book = Book.find(params[:id]) 41 if book.destroy 42 flash[:notice] = 'Book was successfully destroyed.' 43 redirect_to books_path 44 end 45 end 46 47 private 48 def book_params 49 params.require(:book).permit(:title, :body) 50 end 51end

↓ railsのindex.htmlです

RubyOnRailsHTML

1<% if flash[:notice] %> 2 <p style="color: limegreen;"><%= flash[:notice] %></p> 3<% end %> 4 5<h1>Books</h1> 6<table> 7 <thead> 8 <tr> 9 <th>Title</th> 10 <th>Body</th> 11 </tr> 12 </thead> 13 <tbody> 14 <% @books.each do |book| %> 15 <tr> 16 <td><%= book.title %></td> 17 <td><%= book.body %></td> 18 <td><%= link_to 'Show', book_path(book) %></td> 19 <td><%= link_to 'Edit', edit_book_path(book) %></td> 20 <td><%= link_to 'Destroy', book_path(book), method: :delete, data: {confirm: "Are you sure?"} %></td> 21 </tr> 22 <% end %> 23 </tbody> 24</table> 25 26 27<h2>New book</h2> 28<%= form_with model:@book, local:true do |f| %> 29 30 <h4>Title</h4> 31 <%= f.text_field :title %> 32 <% if @book.errors.include?(:title) %> 33 <p style="color: red;"><%= @book.errors.full_messages_for(:title).first %></p> 34 <% end %> 35 36 <h4>Body</h4> 37 <%= f.text_area :body %> 38 <% if @book.errors.include?(:body) %> 39 <p style="color: red;"><%= @book.errors.full_messages_for(:body).first %></p> 40 <% end %> 41 42 <%= f.submit "Create Book" %> 43<% end %>

↓ railsのshow.htmlです

RubyOnRailsHTML

1<% if flash[:notice] %> 2 <p style="color: limegreen;"><%= flash[:notice] %></p> 3<% end %> 4 5<%= @book.title %><br> 6<%= @book.body %> 7 8<%= link_to 'Edit', edit_book_path(@book) %> 9<%= link_to 'Back', books_path %>

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

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

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

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

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

no1knows

2020/10/22 04:15

テストコードもないのであんまりよくわかりませんが、エラーは、両方ともタイトルとかを入力してくださいとValidationエラーが表示されていますね。 expected to find text "error" in "Books\nTitle Body hoge body Show Edit Destroy\nNew book\nTitle\nTitle can't be blank\nBody\nBody can't be blank"
runban

2020/10/23 00:19

ご回答ありがとうございます!
guest

回答1

0

自己解決

こちらの件に関しまして、解決いたしました。

投稿2020/11/08 06:21

runban

総合スコア152

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問