因此,使用rails 4.2.0和最新的rspec,我为我的控制器生成了一个基本测试。我只是坚持如何在valid_attributes中测试回形针图像。
到目前为止,我一直在寻找这个(这不起作用):
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'}}
还有其他办法吗?或者我是否需要包含一个帮助程序才能使回形针与RSpec一起使用?
我在终端收到的错误是:
Failure/Error: room = Room.create! valid_attributes
Paperclip::AdapterRegistry::NoHandlerError:
No handler found for "\#{rails.root}/spec/support/room-controller-valid.jpg
答案 0 :(得分:8)
尝试设置Paperclip元数据属性,而不是提供真正的:picture
附件。
...
picture_file_name: 'room-controller-valid.jpg',
...
如果您要验证附件内容类型或尺寸,请同时设置这些属性:
...
picture_file_name: 'room-controller-valid.jpg',
picture_content_type: 'image/jpeg',
picture_file_size: 1.megabyte,
...
当然,这不会将您的文件传递给控制器,因此您不需要该文件即可完成此操作。但是您的模型实例应该通过验证。来自Paperclip README:
Paperclip将包含最多四个属性(所有属性都以该附件为前缀) 名称,因此如果您愿意,每个模型可以有多个附件)并给它们一个 友好的前端。这些属性是:
<attachment>_file_name <attachment>_file_size <attachment>_content_type <attachment>_updated_at
默认情况下,回形针只需要_file_name即可运行。 如果要使用内容类型,则需要添加_content_type 验证