ruby-on-rails – rspec控制器中的Rails’post’命令:文件没有
我正在尝试运行以下规范
describe "POST create" do describe "with valid params" do it "redirects to the created banner" do post :create,:banner => valid_attributes response.should redirect_to(admin_banner_url(Banner.last)) end end end def valid_attributes demo_image = File.open(File.join(Rails.root,"spec","samples","laptop1.jpg")) { :name => 'Test Spec Banner',:bannerimage => demo_image } end 创建在validates_presence_of上验证失败:bannerimage – 我将其缩小如下: >如果我从bannerimage中取出validates_presence_of验证,它可以工作,但横幅报告为’missing.png’ 如果有人对帖子失败的原因有任何想法,我会非常感激.我猜测(并且原谅 – 我没有查看’post’命令的内部工作情况,可能在这里),它在调用接受文件(?)时缺少某种“multipart”参数. .不能通过谷歌找到任何东西. 任何想法都赞赏 – 我完全被难过了. 控制器是完全未经修改的Rails 3.1脚手架资源.型号如下. class Banner < ActiveRecord::Base # attr_accessible :name,:url,:bannerimage has_attached_file :bannerimage,:styles => { :full => "960x",:thumb => "100x" } validates_attachment_content_type :bannerimage,:content_type => [ 'image/jpg','image/jpeg','image/gif','image/png'],:message => 'file must be a gif,jpeg or png image' validates_attachment_size :bannerimage,:less_than => 3.megabytes validates_presence_of :name validates_attachment_presence :bannerimage validates_uniqueness_of :name has_many :pages,:dependent => :nullify def to_s name end end 解决方法
根据您的特定测试设置,以下某些组合可能有效,而不是发送File.open
fixture_file_upload('spec/samples/laptop1.jpg','image/jpg') 这个函数是由rails定义的,我相信它可以用于rspec-rails,即使rails希望你使用TestUnit 我在Cucumber步骤定义中使用了它,它可能在rspec示例中有效. Rack::Test::UploadedFile.new('spec/samples/laptop1.jpg','image/jpg') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |