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

Kox*_*xzi 7 rspec ruby-on-rails 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'}}
Run Code Online (Sandbox Code Playgroud)

还有另一种方法吗?或者我是否需要包含帮助程序才能使回形针与RSpec一起使用?

我在终端得到的错误是:

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

ama*_*hah 8

尝试设置Paperclip元数据属性,而不是提供真正的:picture附件.

...
picture_file_name: 'room-controller-valid.jpg',
...
Run Code Online (Sandbox Code Playgroud)

如果您要验证附件内容类型或大小,请同时设置这些属性:

...
picture_file_name: 'room-controller-valid.jpg',
picture_content_type: 'image/jpeg',
picture_file_size: 1.megabyte,
...
Run Code Online (Sandbox Code Playgroud)

当然,这不会将您的文件传递给控制器​​,因此您不需要该文件即可完成此操作.但是您的模型实例应该通过验证.来自Paperclip README:

Paperclip将包含最多四个属性(所有属性都以该附件的名称为前缀,因此如果您愿意,每个模型可以有多个附件),并为它们提供友好的前端.这些属性是:

<attachment>_file_name
<attachment>_file_size
<attachment>_content_type
<attachment>_updated_at
Run Code Online (Sandbox Code Playgroud)

默认情况下,回形针只需要_file_name即可运行.如果要使用内容类型验证,则需要添加_content_type.