任意或自定义 URL 的 Rails 功能测试

2024-02-02

我的 Rails 应用程序中有一个名为“Photo”的 RESTful 资源。我在用着回形针 http://www.thoughtbot.com/projects/paperclip为我的照片提供不同的“样式”(缩略图等),并且我使用自定义路由来以 REST 方式访问这些样式:

map.connect "photos/:id/style/*style", :controller => "photos", :action => "show"

这工作正常,但我想编写一个测试以确保它保持这种状态。

我已经有一个功能测试来调用照片控制器的显示操作(实际上是由脚手架生成的):

test "should show photo" do
  get :show, :id => photos(:one).to_param
  assert_response :success
end

这测试了 URL“/photo/1”处的操作的执行情况。现在我想测试URL“/photo/1/style/foo”的执行情况。不幸的是,我似乎无法让 ActionController::TestCase 访问该 URL; get 方法始终需要一个操作/id,并且不接受 URL 后缀。

如何测试自定义 URL?

Update

在检查@fernyb的答案时,我发现了这个片段相同的 rdoc http://api.rubyonrails.org/classes/ActionController/Routing.html

在测试中,您可以简单地传递 URL 或命名路由来获取或发布。 def 发送到监狱 获取“/监狱” 断言_响应:成功 断言_模板“监狱/前线” 结尾

然而,当我真正try我收到一条错误消息:

test "should get photo" do
  get "/photos/1/style/original"
  assert_equal( "image/jpeg", @response.content_type )
end  

ActionController::RoutingError: No route matches {:action=>"/photos/1/style/original", :controller=>"photos"}

我想知道我是否做错了什么。


Use assert_routing测试路线:

assert_routing("/photos/10/style", :controller => "photos", :action => "show", :id => "10", :style => [])

assert_routing("/photos/10/style/cool", :controller => "photos", :action => "show", :id => "10", :style => ["cool"])

assert_routing("/photos/10/style/cool/and/awesome", :controller => "photos", :action => "show", :id => "10", :style => ["cool", "and", "awesome"])

In your 集成测试然后你可以这样做:

test "get photos" do
   get "/photos/10/style/cool"
   assert_response :success
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

任意或自定义 URL 的 Rails 功能测试 的相关文章

随机推荐

  • ffmpeg 中的去隔行

    我已按照教程进行操作here http dranger com ffmpeg 将视频文件加载到 C 程序中 但帧不是去隔行的 据我所知 ffmpeg 可执行文件支持 deinterlace 开关 我如何在代码中执行此操作 我应该阅读哪些库
  • 如何将按钮名称绑定到内容?

    我有一个按钮列表
  • XSLT 复制所有节点,并按分隔符分割

    我正在寻找一个执行以下操作的 xslt 以输入 xml 为例
  • 无法与任何提供的主机建立套接字

    我正在努力解决 android 中的文件传输问题 我正在使用 smack 4 1 连接到 openfire 服务器 我的问题是 当我使用 Spark 到 Spark 文件传输时 它工作正常 但是当我从Spark 到 Android 或 An
  • 如何在 django 自定义身份验证后端访问请求?

    我想用 django 的身份验证执行以下操作 记录错误的登录尝试 在 x 次错误登录尝试后暂时锁定帐户 记录成功登录 我认为自定义身份验证后端将是解决方案 我可以做我想做的大部分事情 但我想记录进行尝试的用户的 IP 和 REMOTE HO
  • Excel Yield 函数的.NET 实现

    Excel 的名为 分析工具库 的插件提供了 收益率 函数 用于计算定期支付利息的证券的收益率 函数运行良好并返回正确的数据 我的理解是基于迭代的函数 在我的代码中实现它并不容易 我的问题是有人知道 见过 C 最终是其他语言 的实现并可以分
  • 在 Groovy 中获取由字符分隔的子字符串

    考虑下面的字符串 String names Bharath Vinayak Harish Punith 我想以它仅包含的字符串形式获得输出Bharath 字符串直到第一次出现 运算符 任何人都可以告诉我 我们该怎么做 在一般情况下 我同意s
  • Python 列表理解代价高昂

    我试图找到列表理解的效率 但它看起来比普通函数操作更昂贵 有人可以解释一下吗 def squares values lst for x in range values lst append x x return lst def main t
  • 如何在没有 root 访问权限的情况下在本地安装 CPAN 模块(DynaLoader.pm 第 229 行错误)?

    不能与其他模块一起使用 但举个例子 我使用 CPAN 设置安装了 Text CSV XS makepl arg gt q PREFIX lib 当我尝试运行 test pl 脚本时 perl 测试 pl usr bin perl use l
  • 计算n的最佳方法选择k?

    评估 价值 最有效的方法是什么 n choose k 我认为的蛮力方法是找到n k n k 通过单独计算每个阶乘 更好的策略可能是根据这个使用DP递归公式 https i stack imgur com Kq3OH png nCk n 1
  • WHERE IN问题中的SQL占位符,插入字符串失败

    作为我工作的一部分 我需要编写 SQL 查询来连接到我们的 PI 数据库 要生成查询 我需要传递一个array标签 本质上是主键 但这些必须作为字符串插入 由于这将是一个模块化查询并用于多个标签 因此使用了占位符 该查询依赖于 WHERE
  • OpenGL - ARB 扩展

    我使用的是 MacBook Pro 13 英寸 2010 年中 并且使用 OpenGL 我注意到 库中缺少一些功能 我在互联网上找到了有关我的硬件的规格 上面写着 支持OpenGL 3 3 这很奇怪 所以我打印了我的 OpenGL 版本并这
  • 使用deathbycaptcha服务处理Google recaptcha v2时如何控制scrapy中的请求流?

    你好 我正在使用 python 使用 scrapy 网络爬行框架 抓取网站并使用 Deathbycaptcha 服务解决我在其页面上遇到的验证码 我的下载延迟设置为 30 秒 我只抓取几页来获取基本信息 这样我就不会过多地占用网站带宽或任何
  • 中断当前正在执行的所有 asyncio.sleep

    where 这是在 Linux Python 3 5 1 上 what 我正在开发一个监控流程asyncio 他们在不同地方的任务await on asyncio sleep不同时长的呼叫 有时我希望能够打断所有所说的话asyncio sl
  • 在哪里放置与 IPython“冻结模块”调试器警告相关的 Python 配置代码?

    我刚刚在 Macintosh 上使用了 brew 来升级我的设置 现在 当我运行时 我收到此 调试器警告 jupyter notebook 其他文字被剪掉 I 09 03 00 955 NotebookApp Jupyter Noteboo
  • Flux:如何让一个动作等待存储?

    我正被一个 React 问题困住了 我确信这个问题不会像我现在看起来那么困难 我正在针对 RESTful 服务器 API 构建一个单页应用程序 该 API 返回资源以及描述可以使用该资源执行的操作的链接 我试图确保我的客户端的 ajax 调
  • 将 DataMemberAttribute 放在接口成员上意味着什么?

    放置一个是什么意思数据成员属性 http msdn microsoft com en us library system runtime serialization datamemberattribute aspx在接口成员上 这对派生类有
  • 绘制位图 C# [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试使用位图类在屏幕上绘制图像
  • 标准库算法是否允许复制谓词参数?

    假设我们想从向量中删除重复值ints 通常的解决方案是对向量进行排序并使用擦除删除惯用语删除重复项 但我们需要保持不会被移除的元素的顺序 所以我们无法排序 所以人们可能会想出这样的谓词并使用 with withremove if算法 str
  • 任意或自定义 URL 的 Rails 功能测试

    我的 Rails 应用程序中有一个名为 Photo 的 RESTful 资源 我在用着回形针 http www thoughtbot com projects paperclip为我的照片提供不同的 样式 缩略图等 并且我使用自定义路由来以