gpt4 book ai didi

ruby-on-rails - 如何在 Capybara/Rspec 中 stub 回形针文件路径

转载 作者:行者123 更新时间:2023-12-04 05:50:55 24 4
gpt4 key购买 nike

对于某些应用程序,我使用 Paperclip 进行文件上传(实际上是 dm-paperclip 风格),并使用 Factory Girl、Rspec、Capybara 进行测试。
我有一个非常简单的“图片”模型工厂,我按照 this post 中的建议在其中 stub 我的文件属性。 :

FactoryGirl.define do
factory :picture do
title "My Picasso"
description "It's like looking in a mirror."
picture_file_file_name { 'spec/resources/img_1.jpg' }
picture_file_content_type { 'image/jpg' }
picture_file_file_size { 1024 }
end
end

在 Capybara 的各种功能测试中,我访问了其中模板具有图片实例缩略图的页面:
feature "List of Pictures", :js => true  do
scenario "displays appropriately the index page of the pictures with pagination" do
FactoryGirl.create_list(:picture, 21)
visit '/pictures'
# And more testing...
end
end

模板之一中使用的部分示例:
=  content_tag_for(:li, picture, :class => 'listed_picture') do
= link_to picture_path(picture) do
- if picture.picture_file?
= image_tag picture.picture_file.url(:thumb)

我现在遇到的问题是,每当我运行规范时,测试都会失败,因为缩略图 url 没有匹配的路由:
No route matches [GET] "/system/picture_files/1/thumb/img_1.jpg"

有没有办法 stub Paperclip 的辅助方法以使测试通过?

在此先感谢您的帮助!

最佳答案

我刚刚经历了这个过程。这是我解决问题的方法。

首先,我在对象上创建了一个方法来引用图像 URL,既要遵守 Demeter 定律,又可以使测试更容易。对你来说,这可能看起来像:

#picture.rb

class Picture
...
def picture_file_url(size = nil)
picture_file.url(size)
end
...
end

现在我们准备在规范中 stub Paperclip 附件 URL:
describe "List of Pictures", :js => true  do
it "displays appropriately the index page of the pictures with pagination" do
let(:picture) { create(:picture) }
allow(Picture).to receive(:picture_file_url) { "url" }
visit '/pictures'
# And more testing...
end
end

希望这对您或某人有帮助。

关于ruby-on-rails - 如何在 Capybara/Rspec 中 stub 回形针文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23860635/

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