私は機能テストを持っています。 let!(:product1) { create(:product) }
FactoryGirl/Botイメージ定義
私が作成して保存するFactoryBotを使用しています:データベースに製品オブジェクトを:この機能テストでは、私は、テスト・データベースにいくつかのデータをロードする必要が
FactoryBot.define do
factory :product do
name 'Master Coat'
color 'black'
size 'M'
price '870'
available true
order 1
image_1 '/assets/images/test_image.jpeg'
image_2 '/assets/images/test_image.jpeg'
image_3 '/assets/images/test_image.jpeg'
image_4 '/assets/images/test_image.jpeg'
image_5 '/assets/images/test_image.jpeg'
image_6 '/assets/images/test_image.jpeg'
end
end
そして私は私のRSpecのテストを実行します。私の見解は、私の本当のアプリでAWSからのURLからロードされている画像を1、2、などを生成する必要があるため
describe 'GET #detail' do
it 'should return only products with a specified name' do
visit detail_path(name: 'Master Coat')
end
end
はしかし、私はエラーを取得します。しかし、私のテストでは、私はイメージをテストしていないので、私はAWSにリクエストを送信したくありません。読み込まれた画像は無関係です。私はちょうど私のapp/assets/images/test_image.jpeg
ディレクトリにダミーイメージを持っていて、FactroyBotはそのイメージをすべてのテストに使用したいと思っていますが、私はイメージへのパスを正しく指定していないために問題を起こしていて、FactoryBotは私にエラー:
ActionView::Template::Error:
The asset "assets/images/test_image.jpeg" is not present in the asset pipeline.
私はそれを動作させるためにいくつかの方法を試しました。 FactoryBotがダミーイメージを取得できるように、自分のイメージフォルダにURLを指定する適切な方法は何ですか?そしてこれはこれを行う最善の方法ですか、より良い方法ですか?
私が最初にパスなしで試してみました、それが動作しませんでしたが、今私はそれが原因で別のエラーで働いていませんでしたが分かりました。いずれにせよ、これは魅力のように働き、ブロックを使って工場を短縮した方法を愛しています:)。 – Darkisa