gpt4 book ai didi

ruby-on-rails - rspec Controller : Files aren't passing through.中的Rails 'post'命令(是否有多部分设置?)

转载 作者:行者123 更新时间:2023-12-04 13:14:40 26 4
gpt4 key购买 nike

我正在尝试运行以下规范

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”
  • Banner.create!(valid_attributes)工作于
  • 我在上面只显示了一个规范,但是在涉及该规范的任何规范上都会出现问题::create,:banner => valid_attributes行
  • 我已经摘录了对attr_accessible的所有引用...没有区别
  • 我尝试将validate_attributes切换到Factory.attributes_for(:banner),并在:bannerimage中添加相同的文件信息
  • Form可以在浏览器中正常工作,包括图像上传/处理
  • File.exists?确认引用的文件确实存在。

  • 如果有人对为什么帖子失败有任何想法,我将不胜感激。我猜(和原谅-我没有研究过'post'命令的内部工作原理,并且可能不在这里),它在接受文件(?)的调用中缺少某种'multipart'参数。 。无法通过Google找到任何内容。

    任何想法表示赞赏-我完全陷入困境。

    该 Controller 是一个完全未经修改的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希望您使用TestUnit,它也可以与rspec-rails一起使用。

    我已经在Cucumber步骤定义中使用了它,它可能在rspec示例中起作用。
    Rack::Test::UploadedFile.new('spec/samples/laptop1.jpg', 'image/jpg')

    关于ruby-on-rails - rspec Controller : Files aren't passing through.中的Rails 'post'命令(是否有多部分设置?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7280204/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com