【问题标题】:RSpec controller testing with paperclip使用回形针进行 RSpec 控制器测试
【发布时间】:2015-02-14 02:18:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    尝试设置回形针元数据属性,而不是提供真实的: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,
    ...
    

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

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

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

    默认情况下,回形针操作只需要 _file_name。 如果您想使用内容类型,则需要添加 _content_type 验证。

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多