2015-02-14 8 views
7

Also mit Rails 4.2.0 und der neuesten rspec habe ich einen Basistest für meinen Controller generiert. Ich bin nur stecken, wie ein Büroklammerbild in den valid_attributes zu testen.RSpec Controller Test mit Büroklammer

Von der Suche um so weit ich habe mit diesem kommen (was nicht funktioniert):

let(:valid_attributes) {{name: 'The New Room', description: 'This is the brand new room', size: '250', capacity: '100', price: '650', picture: '#{rails.root}/spec/support/room-controller-valid.jpg', rmcat_id: '1'}} 

Gibt es eine andere Möglichkeit, dies zu tun? Oder brauche ich einen Helfer, um die Büroklammer für die Arbeit mit RSpec zu bekommen?

Der Fehler ich in Terminal bekommen ist:

Failure/Error: room = Room.create! valid_attributes Paperclip::AdapterRegistry::NoHandlerError: No handler found for "\#{rails.root}/spec/support/room-controller-valid.jpg

Antwort

8

Versuchen Sie, die Büroklammer Metadatenattribute einstellen, statt eine echte :picture Befestigung bereitzustellen.

... 
picture_file_name: 'room-controller-valid.jpg', 
... 

Wenn Sie Anlageninhalt Typ oder Größe validieren, setzen auch die Attribute:

... 
picture_file_name: 'room-controller-valid.jpg', 
picture_content_type: 'image/jpeg', 
picture_file_size: 1.megabyte, 
... 

Natürlich wird dies nicht Ihre Datei an die Steuerung übergeben, so dass Sie nicht brauchen, die Datei, um dies zu erreichen. Ihre Modellinstanz sollte jedoch die Validierung bestehen. Von der Büroklammer README:

Paperclip wird auf vier Attribute einpacken (alle mit dieser Namen der Anlage voran, so können Sie mehrere Anlagen pro Modell, wenn Sie wollen) und ihnen ein freundliches Front-End geben. Diese Attribute sind:

<attachment>_file_name 
<attachment>_file_size 
<attachment>_content_type 
<attachment>_updated_at 

Standardmäßig ist nur _file_name erforderlich, damit die Büroklammer funktioniert. Sie müssen _content_type hinzufügen, wenn Sie den Inhaltstyp Validierung verwenden möchten.