2012-05-16 10 views
5

Ich habe folgendes Modell:Carrierwave Upload funktioniert in Schienen Konsole aber nicht in spec

class Face < ActiveRecord::Base 
    attr_accessible :face_index, :design, :background 
    belongs_to :template 
    mount_uploader :background, BackgroundUploader 
end 

Die BackgroundUploader:

class BackgroundUploader < CarrierWave::Uploader::Base 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 
end 

Wenn ich die Schienen Konsole starten kann ich ein Gesicht erstellen und eine sparen Hintergrund dazu:

f = Face.create(:face_index => 0) 
f.background = File.open("/path/to/image.jpg") 
f.save! 

das alles funktioniert, aber wenn ich versuche, es zu bewegen, ich bin immer einen Fehler RSpec:

Failures: 

    1) Face A new face 
    Failure/Error: @face.background = File.open(image_path) 
    NoMethodError: 
     undefined method `background_will_change!' for #<Face:0x007ff63d9f7410> 

Die Spezifikation:

describe Face do 

    before(:each) do 
    image_path = Rails.root.join('spec/support/images', '02.jpg').to_s 
    @face = FactoryGirl.create(:face) 
    @face.background = File.open(image_path) 
    @face.save! 
    end 

    describe "A new face" do 
    it { should belong_to(:template) } 
    end 

end 

Die Fabrik:

FactoryGirl.define do  
    factory :face do 
    face_index 0 
    end 
end 

Ich habe diesen Fehler gesehen vor, wenn Uploader Spalte aus der db fehlte, aber wenn meine Migrationen sind richtig für Entwickler sollten sie für den Test korrekt sein, nicht? Muss ich etwas in der Spezifikation benötigen, damit es funktioniert?

danke!

Antwort

5

Doh, war die Antwort mein letzter Absatz, ich vergaß

rake db:test:load 

Ein gutes Beispiel für eine Pause und kommen zurück, um ein Problem zu laufen.

+0

Vielen Dank! Das ist genau das, was ich brauchte, um viele kaputte Spezifikationen zu bekommen, um auch zu arbeiten! – BenU

Verwandte Themen