Rails在rspec测试中提供ActiveStorage映像
在开发和生产中,我们可以在浏览器中访问图像。在测试运行时,这不适用于测试环境 我们用于图像的URL的格式如下:Rails在rspec测试中提供ActiveStorage映像,rspec,rails-activestorage,Rspec,Rails Activestorage,在开发和生产中,我们可以在浏览器中访问图像。在测试运行时,这不适用于测试环境 我们用于图像的URL的格式如下: http://localhost:3000/images/ABC # for development. Port for tests is 3030 :并重定向到ActiveStorage附件服务URL-如下所示: http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJa
http://localhost:3000/images/ABC # for development. Port for tests is 3030
:并重定向到ActiveStorage附件服务URL-如下所示:
http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaDFTVEd0WlpUbHFlVGh0YW1od1JucEdkMUJuYWxaelNuSUdPZ1pGVkE9PSIsImV4cCI6IjIwMTgtMDYtMDhUMDc6MDM6MDUuNDI2WiIsInB1ciI6ImJsb2Jfa2V5In19--abef581f4df7a19ae1a35a2be03edd028659441f/454.jpg?content_type=image%2Fjpeg&disposition=inline%3B+filename%3D%22454.jpg%22%3B+filename%2A%3DUTF-8%27%27454.jpg
在测试运行时使用(binding.pry-like thing),我们可以确定设置是否正确(或者是否正确): :它确实返回了一个~3.5MiB的图像。但是,当将页面保存为HTML(“blah.HTML”)时,当byebug运行时打开该HTML时,图像不会加载-对
…images/ABC
的调用被拒绝
这是一个问题,因为我们正在使用wicked_pdf生成pdf,并且在生成pdf的测试环境中,它无法访问这些图像以放入pdf
也许可以让测试服务器在rspec之外提供响应?否则,PDF中将没有图像
附加说明-环境配置 在测试中,我们添加了:
before do
host! 'localhost:3030'
end
:虽然显然是主机代码>已弃用。当我们尝试将它重新定位到/rails\u helper.rb
时,它破坏了一系列其他测试
在/config/environments/test.rb
中,我们有以下内容:
Rails.application.configure do
config.active_storage.service = :test
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.host = 'localhost:3030'
config.action_controller.default_url_options = { host: 'localhost:3030' }
config.assets.compile = true
config.allow_concurrency = true
end
在/config/storage.yml
中正确配置了活动存储器:
test:
service: Disk
root: <%= Rails.root.join("tmp/test_storage") %>
测试:
服务:磁盘
根目录:
您解决过这个问题吗?我在Prawn PDF generator中的ActiveStorage附件中遇到了类似的问题。啊哈!是的,对不起,同事说测试是单线程的,所以没有解决方案。我们采用了存根法。但这并不是一个真正的解决方案。。。你对对虾的问题是否超出测试范围?如果是这样的话,请提出一个单独的问题,并在评论中添加一个链接Thank@xxjjnn,虽然我在Prawn中遇到了这个问题,但这似乎是一个与在测试环境中访问文件有关的更普遍的问题。详情如下:
test:
service: Disk
root: <%= Rails.root.join("tmp/test_storage") %>