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!
Vielen Dank! Das ist genau das, was ich brauchte, um viele kaputte Spezifikationen zu bekommen, um auch zu arbeiten! – BenU