Ruby コントローラーテストコードについて
解決したいこと
テストコードを作成しているのですが、コントローラーのテストコードがうまくいかないため改善したい
Ruby on Railsで記事を投稿するWebアプリを作成しました。
テストコードの実装を行なっているのですが、下記エラーが出てしまい、対策がわかりません。
解決方法を教えて下さい。
発生している問題・エラー
Failure/Error: expect(response.body).to include(@article.title)
expected "<!DOCTYPE html>\n<html>\n <head>\n <title>GoalF</title>\n \n \n <meta name=\"viewport\"...ter\">\n <div class=\"copy-light\">\n <p>© Goalf</p>\n </div>\n</footer>\n </body>\n</html>\n" to include "[\"春休み\", \"ひんかく\", \"奉仕\"]"
Diff:
@@ -1,78 +1,155 @@
-["春休み", "ひんかく", "奉仕"]
***省略***
<h2 class='article-title'>["春休み", "ひんかく", "奉仕"]</h2>
***省略***
該当するソースコード
require 'rails_helper'
RSpec.describe "Articles", type: :request do
before do
@article = FactoryBot.create(:article)
end
describe 'GET #index' do
it 'indexアクションにリクエストすると正常にレスポンスが返ってくる' do
get root_path
expect(response.status).to eq 200
end
it 'indexアクションにリクエストするとレスポンスに投稿済みのツイートのテキストが存在する' do
get root_path
expect(response.body).to include(@article.title)
end
it 'indexアクションにリクエストするとレスポンスに投稿検索フォームが存在する' do
get root_path
expect(response.body).to include('記事を検索する')
end
end
end
自分で試したこと
FactoryBotとFakerにて入力される文字を生成していて、エラー文の内容を見る限り
生成したデータはしっかりと反映されていて、その文字も認識されてはいるものの
「"春休み"」の"のせいなのかうまくresponse.bodyできていないように見えました。
ですので、Fakerの要素を変えたり、インライン要素じゃないものにしたりしましたが直らず。。。
何か気になる点あればご教示いただきたいです。
0