2015-02-14 15 views
7

Vì vậy, với đường ray 4.2.0 và rspec mới nhất tôi đã tạo ra một thử nghiệm cơ bản cho bộ điều khiển của mình. Tôi chỉ bị mắc kẹt với cách kiểm tra một hình ảnh kẹp giấy trong valid_attributes.Kiểm tra bộ điều khiển RSpec với kẹp giấy

Từ tìm kiếm xung quanh cho đến nay tôi đã đi lên với điều này (mà không làm việc):

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'}} 

Có một cách khác để làm điều này? Hay tôi cần bao gồm một người trợ giúp để lấy kẹp giấy để làm việc với RSpec?

Các lỗi tôi nhận được trong thiết bị đầu cuối là:

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

Trả lời

8

Hãy thử thiết lập các thuộc tính Kẹp giấy siêu dữ liệu, thay vì cung cấp một tập tin đính kèm :picture thực.

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

Nếu bạn đang xác nhận kiểu nội dung tập tin đính kèm hoặc kích thước, thiết lập những thuộc tính cũng như:

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

Tất nhiên, điều này sẽ không vượt qua tập tin của bạn với bộ điều khiển, do đó bạn không cần tệp để thực hiện việc này. Nhưng trường hợp mô hình của bạn phải vượt qua xác thực. Từ Kẹp giấy README:

Kẹp giấy sẽ quấn lên đến bốn thuộc tính (tất cả tiền tố với tên của tập tin đính kèm mà, vì vậy bạn có thể có nhiều file đính kèm mỗi mô hình nếu bạn muốn) và cung cấp cho họ một trận giao hữu cuối cùng trước . Các thuộc tính này là:

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

Theo mặc định, chỉ cần _file_name để kẹp giấy hoạt động. Bạn sẽ cần thêm _content_type trong trường hợp bạn muốn sử dụng loại nội dung xác thực.

Các vấn đề liên quan