rspecを使った場合の画像アップロードのcontrollerのテスト
Paperclipを使って画像アップロードしている場合、コントローラのテストをどう書いたら良いのだろうか。今回はspec/fixtures以下にテスト用の画像があるとして、その書き方例を書く。
require 'rack/test' describe PhotosController do describe "photo 投稿Form表示" do context "new method" do before do @user = User.find(1) allow(controller).to receive(:current_user) { @user } @albums = @user.albums allow(controller).to receive(:albums) { @albums } get :new end it { expect(@albums).not_to be_nil } it { expect(render_template('new')) } it { expect(render_with_layout('photo')) } it { expect(respond_with(200)) } it { expect(get: '/new').to route_to('photos#new') } end context "Photo投稿" do before do @user = User.find(1) allow(controller).to receive(:current_user) { @user } @albums = @user.albums @file = Rack::Test::UploadedFile.new('spec/fixtures/test.png', 'image/png') post :create, photo: { title: 'test photo', description: "これはテストです", user_id: 1, album_id: 1, photo: @file } end it { expect(render_with_layout('photo')) } it { expect(respond_with(302)) } end end end