0

画像がページに表示されているかどうかをテストする rspec 機能仕様があります。なんらかの理由で、機能仕様で設定したイメージがコントローラーのテスト環境で利用できないようです。「puts」ステートメントを使用して、画像がビューに到達する前にコントローラーで使用できるかどうかを確認しています。

マイスペック:

require 'spec_helper'

feature "Add Images" do
    let(:bob) { FactoryGirl.create(:user)}

    context "user with a teammate who has a profile picture" do
        given(:jane) { FactoryGirl.create(:profile).user }
        given(:teamA) { FactoryGirl.create(:team) }
        before(:each) {
            # bob and jane become teammates
            bob.teams.create.users<<jane
            # bob adds a profile picture
            bob.profile.picture = File.new(Rails.root.join('spec', 'features', 'files', 'images.jpeg'))
            bob.save(validate: false).should be_true
        }

        scenario "try to upload a team photo" do
            sign_in_with(bob.email, bob.password)
            expect(current_path).to eq "/myprofile"
            page.should_not have_content "To register for an event, first you need to find a teammate!"
            page.body.should_not have_link "find a teammate!"
            url = bob.profile.picture.url(:tour)
            page.body.should have_xpath("//img[@src=\"#{url}\"]")


        end
    end
end

私のモデル:

class Profile < ActiveRecord::Base
    belongs_to :user
    validates :first_name, :last_name, :city, :street_address, :state, :presence => true, :on => :update
    picture_options = {
        styles: {
            medium: '300x300>}',
            teamP: '96x96#',
            tour: '80x80#'
        },
        :url => "/system/:attachment/:id/:style.:extension",
    }
    picture_options.update({
        storage: :s3,
        s3_credentials: "#{::Rails.root}/config/aws.yml"
    }) if ENABLE_S3

  has_attached_file :picture, picture_options


end

私のコントローラー:

def show_current
    @can_register = current_user.teams.size > 0
    @profile = current_user.profile
    @team = current_user.teams.first
    puts @profile.picture?
    puts @profile.id

end

私の見解:

 <% if @profile.picture.exist? %>
     <%= image_tag @profile.picture.url(:tour), class: 'tourPersonMain', alt: 'Person Icon' %>
 <% else %>
       <%= image_tag 'iconPersonBig.png', class: 'tourPersonMain', alt: 'Person Icon' %>
 <% end %>

テスト出力:

 1) Add Images user with a teammate who has a profile picture try to upload a team photo
 Failure/Error: page.body.should have_xpath("//img[@src=\"#{url}\"]")
 Capybara::ExpectationNotMet:
   expected to find xpath "//img[@src=\"/system/pictures/14/tour.jpeg?1371927924\"]" but there were no matches
4

0 に答える 0