現在開発しているアプリにユーザーのアイコン画像を設定する機能があるのですが、RSpecで差し替えた画像が画面に反映されているかを検証したい場合にどのような方法が良いのか分かりませんでした。

何とかテストが上手くいったので、忘れない内にやり方を記録しておこうかと思います。

画像のアップロード

capybaraのattach_fileというメソッドを利用すれば、アップロードする画像を選択する操作を行う事ができます。

attach_file 'locator', 'パス'

画像ファイルを任意のフォルダに配置できるようです。

以下のようにパスを組み立ててみると良いかと思います。

attach_file 'アイコン画像', "#{Rails.root}/spec/factories/images/icon.jpg"

Rails.rootを利用することで、アプリのプロジェクトフォルダ直下のパスを取得できます。

画像の判定

次に、アップロードした画像が画面に正しく反映されているかを確認します。

以下のコードで、画面に表示されている画像の判定を行うことができます。

expect(page).to have_selector "img[src$='icon.jpg']"

imgタグのsrc属性に、検証したい画像ファイルのパスを指定します。

先ほどアップロードした同じ画像ファイルのパスを指定することで、アップロードした画像と同じものが表示されているかを判定することができます。

更新日 : 2020年7月9日

投稿者: TWEI

趣味はプログラミング。 以前は仕事でプログラミングをやっていました。現在はWebエンジニアを目指して勉強中。 勉強で得た知識などをブログで発信していく予定です。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA