Rspec中的回形针内容类型验证失败

泰勒714

我将Rails 4.0.0和Paperclip 4.1.1一起用于附加mp3和pdf文件。我正在使用Capybara在Rspec中编写集成测试。

我对两种文件都有内容类型和文件名验证。

class Song < ActiveRecord::Base
  validates :title, presence: true
  validates :writeup, presence: true

  has_attached_file :mp3
  validates_attachment :mp3,
    :content_type => { :content_type => "audio/mp3" },
    :file_name => { :matches => [/mp3\Z/] }

  has_attached_file :chords
  validates_attachment :chords,
    :content_type => { :content_type => 'application/pdf' },
    :file_name => { :matches => [/pdf\Z/] }

end

我在集成测试中使用它来填充有效歌曲的属性:

def fill_in_valid_song
    fill_in("Title", with: "Valid Song")
    fill_in("Writeup", with: "Description of song")
    attach_file("Mp3", File.join(Rails.root, "/spec/factories/Amazing_Grace.mp3" ))
    attach_file("Chords", File.join(Rails.root, "/spec/factories/FakeChordChart.pdf" ))
  end

当我运行集成测试以创建有效的歌曲时,会接受pdf文件,但mp3文件无法通过内容类型验证。

当我自己在浏览器中按照相同的步骤进行操作时,歌曲成功上传,没有错误。模型规格也使用相同的文件传递。

我以为附加文件时问题可能出在“ Mp3”中的大写字母“ M”上,但这只是为了指定附件随附的文件字段。当我尝试将其更改为小写的“ m”时,错误更改为Capybara无法找到该字段。

用户名

将mp3文件的内容类型验证更改为:

validates_attachment :mp3,
    :content_type => { :content_type => ["audio/mpeg", "audio/mp3"] },
    :file_name => { :matches => [/mp3\Z/] }

mp3文件RFC定义的MIME类型为audio/mpeg但是,某些浏览器会加载它们,audio/mp3这可能就是为什么它可以通过浏览器工作的原因。

如果这不起作用,您还可以添加,audio/mpeg3并且audio/x-mpeg-3正如我所看到的,它们也被使用了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

回形针进行内容类型验证失败

视频内容类型在回形针-ffmpeg中无效

如何在RSpec中验证JSON类型?

回形针类型验证始终会出错

xls和xlsx的回形针内容类型

SwaggerJS 验证失败:无效的内容类型(应用程序/json)

如何为图像的回形针宝石验证添加 rspec

Ruby在轨道上。回形针mp3验证失败

当我在模型中添加自定义验证时,RSpec中的模型验证失败

我可以验证回形针附件不是危险的文件类型吗?

验证失败:1:映射类型丢失;在Elasticsearch中

电子邮件格式验证的 RSpec 失败

验证“类型” json模式失败

由于模型中的“only_integer”验证,rails factory rspec测试失败

StringIO的回形针验证无效

属于 RSpec 中的规范失败

RSpec-如何添加默认内容类型?

Plone-如何使验证器从行为中验证特定内容类型的字段?

GetCurrentRegistrations中列出了一种类型,但“验证”失败,提示未注册类型

使用回形针在Rails应用程序中上传照片时,显示内容类型无效

在EWL中,验证失败后可以更改表单项的内容吗?

导轨上的回形针验证错误

json模式验证失败,尽管类型正确

验证PactNet中的类型

评论模型的 Rspec 测试(验证失败:用户必须存在)

Rspec身份验证密码测试无缘无故失败

是什么导致此 Laravel 应用程序中的图像类型验证失败?

内容类型在螺栓中

如何获取rspec以显示在失败的测试中找到的内容