如何在 Rails / Capybara / Cucumber 或 Rspec 中测试帖子

2023-11-24

我正在使用 rspec、cucumber 和 capybara,我正在寻找一种方法来测试恶意用户无法破解表单然后发布到他/她没有权限的 URL。我在 cancan 中设置了权限,这样“应该”可以工作,但是,我可以测试它的唯一方法是自己破解一个表单。

我怎样才能自动化这种测试?有了 webrat,我可以在 rspec 的单元测试中做到这一点,比如

put :update, :user_id => @user.id, :id => @user_achievement.id
response.should contain("Error, you don't have permission to access that!") 

然而,对于水豚来说,似乎只有访问才能得到。我找不到办法做到这一点,我已经到处搜索了。

任何帮助将非常感激, 谢谢


我认为你可以通过机架测试来做到这一点https://github.com/brynary/rack-test

在你的 Gemfile 中:

gem 'rack-test'

在你的 env.rb 文件中

module CapybaraApp
  def app; Capybara.app; end
end
World(CapybaraApp)
World(Rack::Test::Methods)

步骤定义某处:

When /^I send a POST request to "([^"]*)"$/ do |path|
  post path
end

我学到的大部分内容都来自这里:http://www.anthonyeden.com/2010/11/testing-rest-apis-with-cucumber-and-rack-test

更新:我认为您可以使用较新版本的 Rails 和/或 Cucumber 跳过对 env.rb 文件的更改(不确定是哪一个,我只是不在我的新项目中执行该部分,并且工作正常)

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

如何在 Rails / Capybara / Cucumber 或 Rspec 中测试帖子 的相关文章

随机推荐

  • 快速更新约束

    我将约束添加到我的创建的按钮中UIView func CreateButtonWithIndex index Int newButton setTranslatesAutoresizingMaskIntoConstraints false
  • 将 C++ 对象添加到 Objective-C 类

    我正在尝试混合 C 和 Objective C 我已经完成了大部分工作 但希望在 Objective C 和 C 代码之间有一个接口类 因此我想在 ViewController 接口中有一个持久的 C 对象 由于禁止声明没有类型的 myCp
  • 安装magento,数据库连接错误。

    我正在尝试将 magento 安装到我的 web 主机上 在安装过程中我收到 数据库连接错误 我已正确输入所有值 已联系我的 web 主机以确保我此时陷入困境 他们说参考 magento 论坛额外的支持 我找不到修复方法 任何想法 帮助将不
  • 使用 ggplot2 仅将线段添加到一个方面

    作为一个例子 我有这个数据框 称为my data Groups FactorA FactorB FactorC N value sd se ci 1 Control Condition1 Condition1 Condition1 3 92
  • JPA - 在 persist() 之后返回自动生成的 id

    我正在使用 JPA EclipseLink 和 Spring 假设我有一个带有自动生成 ID 的简单实体 Entity public class ABC implements Serializable Id GeneratedValue s
  • 不使用 Qt 运行 .EXE

    Solution 我想运行我创建的应用程序QtSDK在没有的机器上Qt安装 我尝试复制DLL s来自BIN文件夹到我的项目的发布中 但它不起作用 我尝试了以下方法 我全部复制dll s folder d Qt Qt5 0 1 5 0 1 m
  • 我想在单独的 php 文件上运行 wp_query 以进行 ajax 调用

    例如 ul class thumbs li class li ul
  • 图像标题和换行

    在图像下方添加标题的最佳方法是什么 图像及其标题将向右浮动 并且标题上的文本需要换行 200x200px 的图像不应具有宽度为 800px 的标题 我强烈希望有一个解决方案能够让我在不更改 CSS 或标记的情况下更新图像 具有不同的宽度 由
  • 尝试从 ReadStream 读取时接收错误 Domain=kCFErrorDomainCFNetwork Code=2

    我正在尝试同步读取CFReadStream反对创建者CFStreamCreatePairWithSocketToHost 流打开得很好 但是当我尝试调用时CFReadStreamRead在循环中 CFReadStreamRead 返回 1
  • 使用 Chrome 时的 Selenium“selenium.common.exceptions.NoSuchElementException”

    我正在尝试玩QWOP在 Chrome 上使用 Selenium 但我不断收到以下错误 selenium common exceptions NoSuchElementException Message no such element Una
  • Android 扩展中的实验性功能有利于生产发布

    我正在使用 Parcelize使用 Kotlin 语言进行 Android 开发的功能 为了使用它们 我在 build gradle 文件中进行了以下修改 apply plugin kotlin android extensions the
  • 对字符串数组列表进行排序 C#

    我有一个字符串数组列表 其中数组的格式为 动物 品种 名称 Dog Golden Retriever Rex Cat Tabby Boblawblah Fish Clown Nemo Dog Pug Daisy Cat Siemese We
  • 如何将另一个项目 (Dll) 中的 UserControl 添加到我的 WPF 解决方案中?

    所以 一切都在标题中 我只想在我的 WPF 窗口中添加一个 UserControl 它看起来很简单 但 UserControl 位于同一解决方案的另一个项目 Dll 项目 中 我就是无法参考它 所以 我最好的尝试是这样的
  • 使用 By() 计算变化百分比

    我是一个没有经验的 R 用户 一直在努力使用 By 函数 非常感谢您的帮助 任务很简单 我有一个纵向数据集 如何声明一个 需要通过 ID 计算不同的指标 其中一个指标是简单的百分比变化 需要滞后 示例如下 ID Date Temp Chan
  • 如何在放大弹出插件中的弹出窗口中打开弹出窗口

    谁能告诉我如何使用 magnific popup jquery 插件 使用 ajax 在弹出窗口中打开弹出窗口 ajax popup link magnificPopup type ajax a href path to file html
  • System.Collections.Generic.Dictionary = 终极性能?

    我正在编写 Haxe C 目标 并且一直在研究 Haxe 的 std 库的性能差异 以便我们可以通过其跨平台代码提供尽可能最佳的性能 哈希表代码就是一个很好的例子 我有点不愿意使用 NET 的字典 因为它看起来很庞大 由于内存对齐问题 键
  • Hibernate 级联删除对象

    我对cascade delete 的工作原理有点困惑 我在城市映射文件中按以下方式定义了映射
  • 如何从 Android ListView 获取第一个可见视图

    有没有办法从Android中的ListView中获取第一个可见的View 我可以获取支持适配器中第一个视图的数据 但似乎无法获取 ListView 中的第一个视图 我想在滚动操作完成后更改第一个可见视图 我知道我不应该保存对视图的引用 实际
  • 持久性与非持久性 - 我应该使用哪一个?

    我的网站一直使用持久连接 根据我对它们的理解 没有理由不这样做 当连接可以重用时为什么要关闭它呢 我有一个网站总共访问大约 7 个数据库 这不是一个流量巨大的网站 但也足够大了 您对持久性有何看法 我应该使用它们吗 使用持久连接 您无法有效
  • 如何在 Rails / Capybara / Cucumber 或 Rspec 中测试帖子

    我正在使用 rspec cucumber 和 capybara 我正在寻找一种方法来测试恶意用户无法破解表单然后发布到他 她没有权限的 URL 我在 cancan 中设置了权限 这样 应该 可以工作 但是 我可以测试它的唯一方法是自己破解一