プログラミング

AjaxをSystem specでテストする書き方

投稿日:

こんにちは、Nanayakuです。

自分は「Ajaxを用いた動的なコメント投稿・削除機能の実装で学ぶRuby on Rails - 銀行員からのRailsエンジニア」を参考にAjaxを実装しました。

その時、RSpecのSystem specでエラーが発生したので、その対策を紹介します。

テスト内容

自分は、下記のようなコメントをして、そのコメントが表示されているかのテストを作成しました。

 

エラーの原因

Ajaxの仕組みについては、「Ajaxを用いた動的なコメント投稿・削除機能の実装で学ぶRuby on Rails - 銀行員からのRailsエンジニア」で分かりやすく説明しているので、こちらを読んでください。

今回発生したエラーは、コメントを保存した後、レンダリングするファイルがないと言うエラーでした。

どう言うことかと言うと、「render :index」は、views/commentsディレクトリ内にあるindex.erbファイルを返します。

しかし、views/commentsディレクトリ内には、「_form.html.erb」「_index.html.erb」「index.js.erb」の3つしかないため、index.erbファイルを作るかどうにかしろと言うエラーが発生します。

このエラーを解決するには、ファイル名で指定する書き方をすればOKです。

【Rails】部分テンプレートの使い方を徹底解説! | ピカわか! - ピカ1わかりやすいプログラミング用語サイトにあるように、「render」はアクション名とファイル名を指定できます。

下記のように、「index.js.erb」を指定すればエラーは発生しません。

 

参考サイト

レイアウトとレンダリング | Rails ガイド

【Rails】部分テンプレートの使い方を徹底解説! | ピカわか! - ピカ1わかりやすいプログラミング用語サイト

 

最後に

今回のエラーは、「render」の仕様についてちゃんと理解していなかった事が、1番の原因でした。

使っているメソッドについて、しっかり理解しておく事が大事です。

-プログラミング
-

Copyright© Nanayaku blog , 2019 All Rights Reserved Powered by AFFINGER5.