使用回形针进行RSpec控制器测试

时间:2015-02-14 02:18:56

标签: ruby-on-rails rspec paperclip rspec-rails

因此,使用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

1 个答案:

答案 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   验证