首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Rails测试中指定POST参数?

在Rails测试中指定POST参数,可以使用post方法,并将参数作为哈希传递给该方法。以下是一个示例:

代码语言:ruby
复制
test "should create post with specified parameters" do
  post :create, params: { post: { title: "My Title", content: "My Content" } }
  assert_response :redirect
  assert_redirected_to post_path(assigns(:post))
  assert_equal "My Title", assigns(:post).title
  assert_equal "My Content", assigns(:post).content
end

在这个示例中,我们使用post方法来模拟创建一个新的帖子,并将titlecontent参数作为哈希传递给该方法。然后,我们使用assert_response方法来检查响应是否为重定向,使用assert_redirected_to方法来检查重定向的目标是否正确,并使用assigns方法来检查帖子的属性是否正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 接口测试requests.post方法中data与json参数区别

引言   在随笔分类Jmeter入门基础中,分享过一篇《Jmeter处理http请求Content-Type类型和传参方式》,这篇文章主要讲述Jmeter做接口测试时,针对POST请求参数的传递方式...而在使用requests做接口测试的时候,与之不太一样。requests.post主要参数是data与json,这两者使用是有区别的,下面我详情的介绍一下使用方法。   Requests参数 1....2. json与data参数规则: 一、JSON 1.使用json参数,不管报文是str类型,还是dict类型,如果不指定headers中content-type的类型,默认是:application/...2.使用data参数,报文是str类型,如果不指定headers中content-type的类型,默认application/json。...也就是test.py中的方法2. 还证实了第三条规则:使用data参数,报文是str类型,如果不指定headers中content-type的类型,默认application/json。

92830
  • gitlab配置邮箱服务器

    在GitLab中,可以使用电子邮件来进行通知、邀请等操作。为了使用这些功能,您需要在GitLab中配置一个可用的邮箱服务器。在本文中,我将介绍如何在GitLab中配置电子邮件服务器。...gitlab_rails['smtp_enable'] = true然后,您需要指定您的SMTP服务器地址、端口号和协议。...例如,如果您的SMTP服务器地址是smtp.example.com,端口号是465,协议是SMTPS,则应该将以下行添加到配置文件中:gitlab_rails['smtp_address'] = "smtp.example.com"gitlab_rails...请确保所有设置都与您在配置文件中指定的设置匹配。然后,您可以使用“Send Test Email”按钮来测试您的SMTP服务器是否正常工作。...您还可以尝试使用其他电子邮件客户端,如Outlook或Thunderbird,来测试您的SMTP服务器是否可用。

    7.1K31

    gitlab集成AD域控登录

    GitLab是一个开源的代码托管和项目管理平台,它提供了一系列功能,如代码托管、CI/CD、issue跟踪等。GitLab支持多种认证方式,包括LDAP、OAuth、CAS等。...在安装过程中,需要设置GitLab管理员的用户名和密码。b. 启用AD域控认证在GitLab的配置文件中,可以设置AD域控认证的参数。...在创建过程中,需要设置应用程序的名称、回调地址等。b. 配置应用程序属性在应用程序的属性中,需要设置一些参数,包括应用程序ID、回调地址、加密密钥等。c....然后将该证书的指纹添加到GitLab配置文件中的idp_cert_fingerprint参数中。d. 配置身份提供程序在AD域控服务器上,需要创建一个身份提供程序。...测试AD域控登录完成以上步骤后,可以尝试使用AD域控登录GitLab。具体步骤如下:a. 访问GitLab登录页面在浏览器中访问GitLab的登录页面,并选择使用AD域控登录。b.

    9.3K40

    Rust Web 生态观察| SeaORM :要做 Rust 版本的 ActiveRecord

    这些数据大部分是持久性的,需要存储在数据库中。Active Record使用最明显的方法,将数据访问逻辑放在域对象中。这样,所有人都知道如何在数据库中读取和写入数据。...{ post: post, }, ) } 上面示例中,我们发现有很多来自于 ActiveRecord 的影子(标注注释的地方)。...`posts` 对应的数据模型,你也可以命名为 `Post` #[sea_orm(table_name = "posts")] pub struct Model { // 可以通过宏指定主键...Rails 中的 ActiveModel 还提供一些模型验证等丰富的功能,目前 SeaORM 中的 ActiveModel 抽象也正在完善相关功能,参见 PR: Update `ActiveModelBehavior...它类似于 Rails 的 ActiveRecord ORM 框架的 Arel[13] 组件。 示例代码: // 参数绑定 assert_eq!

    10.3K20

    ​你回去了解一下RESTful风格

    /items/l 从上述两个请求中可以看出,RESTful风格中的URL将请求参数id=1变成了请求路径的一部分,并且URL中的queryltems也变成了items( RESTful风格中的URL不存在动词形式的路径...接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。...不过很多人直接把POST、GET、PUT、DELETE直接对应上CRUD,例如在一个典型的rails实现的RESTful应用中就是这么做的。...例如rails框架就支持通过隐藏参数_method=DELETE来传递真实的请求方法, 而像Backbone这样的客户端MVC框架则允许传递_method传输和设置X-HTTP-Method-Override...方法中的@PathVariable("id")注解则用于接收并绑定请求参数,它可以将请求URL中的变量映射到方法的形参上,如果请求路径为"/user/{id}",即请求参数中的id和方法形参名称id一样

    83010

    Rails 3 Script 改版

    1.6.0) 蒙哥(1.3.1) 蒙古包(2.0.2) mongoid-rspec(1.4.2) multi_json(1.0.2) multi_xml(0.2.2) multipart-post...服务器(快捷别名: “ s”) DBCONSOLE启动控制台 对 数据库中指定 的 配置/ database.yml中 (快捷别名: “ db”) new.../my_app” 除了这些,还有: 应用程序生成Rails应用程序代码 销毁使用 “生成”生成的撤消代码 基准测试器查看一段代码的运行速度 profiler 从 一段代码中...获取配置文件信息 插件安装插件 运行程序在 应用程序环境中 运行一段代码 可以使用 -h 运行所有命令 以获取 更多信息。...调用test_unit 创建测试/单位/助手/account_helper_test.rb 同时加了几个选项: 用法:rails生成GENERATOR [args] [options

    7.1K20

    ajax中参数traditional的作用

    在使用ajax向后台传值的时候,有的时候一个字段需要传多个值,这种情况下会想到用数组形式来传,比如: $.ajax({ type: "post", async: true, data: {..."] }, url: "xxxxx", error: function(request) {}, success: function(data) {} }); 但是通过测试很快就会发现...java后台无法取到参数,因为jQuery需要调用jQuery.param序列化参数,jQuery.param(obj, traditional )默认情况下traditional为false,即jquery...会深度序列化参数对象,以适应如PHP和Ruby on Rails框架,但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化,然后序列化结果如下:     records...,如下: $.ajax({ type: "post", async: true, traditional: true, data: { "records": ["123","

    50330

    聊聊近期公开的几个GitLab高额奖金漏洞

    rails应用程序的访问, 也就是说,所有对 Rails 组件的请求都得经过 Workhorse,但有时也可能被绕过。...比如这里的用来上传wifi附件的漏洞CGI,正常情况下是指定本地文件路径参数file,但当你把这参数的字段名改成下面这些原本不存在的字段名时: ;file [file] file] ;file] file...最终允许用户指定allowd_paths中的路径给rails组件处理,导致可以访问到以下路径范围内的本地磁盘文件: def allowed_paths [...【漏洞修复】 如果gitlab把file.path参数放在post中应该也能防御,最后他们是添加对字段的检查判断,必须是顶级参数,而不是foo[bar]这种嵌套方式。 ?...总结 多个gitlab漏洞都是基于对业务功能的了解,手工测试+代码审计挖到的可能性较大,每个功能与业务功能逻辑关系很紧密,像漏洞一,似乎你不看代码都不知道有拷贝文件,自然更然想到这个攻击点。

    4.6K30

    Web Hacking 101 中文版 九、应用逻辑漏洞(一)

    虽然 HTML 注入、HTML 参数污染和 XSS 都涉及到提交一些类型的潜在恶意输入,应用落地及漏洞实际上涉及到操纵场景和利用 Web APP 代码中的 Bug。...在 2012 年 3 月,Egor 通知了 Rails 社区,通常,Rails 会接受所有提交给它的参数,并使用这些值来更新数据库记录(取决于开发者的实现。...当核心开发者不同意他的时候,Egor 继续利用 Github 上的认证漏洞,通过猜测和提交参数值,它包含创建日期(如果你熟悉 Rails 并且知道多数数据库记录包含创建和更新日期列,它就不太困难)。...在其他例子中,它涉及直接编程调用 API 来测试应用的行为,就像 Shopify 的管理员权限绕过那样。...这里,所有发生的事情是,移除 POST 参数来绕过安全检查。其次,再说一遍,不是所有攻击都基于 HTML 页面。API 终端始终是一个潜在的漏洞区域,所以确保你考虑并测试了它们。 2.

    4.5K20

    Rails路由

    有时候在复数资源中希望能够不使用ID就能查找资源,如显示当前登录用户的信息: get 'profile', to: 'users#show' 如果 get 方法的to选项的值是字符串,那么这个字符串应该使用...动作上,并把参数1传入params[:id],并将路由映射到 PhotosController#display 上,并且 /photos 请求也会映射到这个控制器动作上,因为 :id 在括号中,是可选参数...photos/1/2 请求会被映射到 photos#show 动作上,这时 params[:id] 的值是 1 ,params[:user_id] 的值是 2 查询字符串 params 也包含了查询字符串中的所有参数...但不能使用 ^ 符号,比如下面就是错误的: get '/:id', to: 'articles#show', constraints: { id: /^\d/ } 路由通配符和通配符片段 路由通配符用于指定特殊参数...选项用于指定隐式 ID 必须满足格式要求 resources :photos, constraints: {id: /[A-Z][A-Z][0-9]+/ } 这时会约束 :id 参数,路由不会匹配 /

    4.5K20

    绕过GitHub的OAuth授权验证机制($25000)

    我对GitHub的主要测试方法为,下载试用版的GitHub Enterprise,然后用我写的脚本把它反混淆(deobfuscate),然后观察GitHub的 Rails 代码查看是否有一些奇怪的行为或漏洞...HTTP HEAD请求时Rails路由在说谎 HEAD方法跟GET方法相同,只不过服务器响应时不会返回消息体。一个HEAD请求的响应中,HTTP头中包含的元信息应该和一个GET请求的响应消息相同。...这种方法可以用来获取请求中隐含的元信息,而不用传输消息实体本身。也经常用来测试超链接的有效性、可用性和最近的修改。...前面我们说过,Rails路由会把它当成GET请求来处理,所以它会被发送到控制器中。...但当HEAD请求到达控制器后,控制器会意识到这不是一个GET请求,所以控制器会检查它是否是一个经过授权验证的POST请求,之后, GitHub会找到请求中指定OAuth授权流程的APP,并给予相应的访问授权

    2.8K10

    数据挖掘工程师:如何通过百度地图API抓取建筑物周边位置、房价信息

    因此,本文的目标是用一个rails应用配合js脚本来实现这种自动化抓取和储存,思路是js脚本负责与百度地图Api交互,rails服务器端负责储存抓取的数据,js和rails服务器用ajax方式传递数据....前提是rails服务器里已经有相应的房屋数据,如房屋的街道地址,小区名字等. 接下来需要做的就是为周边信息数据建表以及相应的关联表(因为它们为多对多关系) ?...2.流程详解 js代码在用户浏览器中执行,因此爬取的主要部分逻辑都需要写在js脚本里,而rails服务器端需要完成的是获得当前需要抓取的房屋数据以及储存js抓取的数据。...keyword_idx], house_loc, search_range); } 3.sendData: sendData负责发送查询数据nearby_info, 周边数据类型由nearby_type指定...== 'shop' render json: params.as_jsonend HousesHelper 3.insert: 解析sendData()发送来的数据, 创建相应的记录. attr中存放着每条周边数据经度

    4K90

    如何在Ubuntu 14.04上使用MySQL和Ruby on Rails应用程序

    如果您的应用程序需要客户端/服务器SQL数据库(如PostgreSQL或MySQL)的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些额外的步骤才能启动并运行它。...本教程将向您展示如何在Ubuntu 14.04服务器上设置开发Ruby on Rails环境,以允许您的应用程序使用MySQL数据库。首先,我们将介绍如何安装MySQL和MySQL适配器gem。...创建新的Rails应用程序 在主目录中创建一个新的Rails应用程序。...配置数据库连接 如果您按照本教程中的MySQL安装说明操作,则为MySQL的root用户设置密码。MySQL根登录将用于创建应用程序的测试和开发数据库。...测试配置 测试应用程序是否能够使用MySQL数据库的最简单方法是尝试运行它。

    4.9K00

    用selenium自动化验收测试

    这里可以用多种受支持的组件定位符中的一种来指定目标。通常使用的是组件的 ID 或名称,但 XPath 和 DOM 定位符也是受支持的。 第三列包含用于为命令或断言指定参数的值。...回页首 现实中的需求 在接下来的两节(现实中的需求 和 现实中的用例)中,我将描述如何在现实场景中使用 Selenium,并针对用 Ruby on Rails 和一点儿 Ajax 技术编写的一个简单的股票报价查看器应用程序编写...在 Ruby on Rails 应用程序中,这个文件夹的名称是 public。...应该看到 Rails 成功启动了,如 图 1 所示。 图 1. 从命令提示符下运行 Ruby on Rails 回页首 现实中的用例 在本节中,我将列出示例应用程序的用例。...查看股票细节测试用例 注意 pause 命令:必须使用这些命令,以便等待异步请求完成和更新页面内容。如果没有 500 毫秒的暂停,测试将失败(如 图 4 所示)。 图 4.

    6.2K30

    如何写出优雅的 Golang 代码

    目录结构 目录结构基本上就是一个项目的门面,很多时候我们从目录结构中就能够看出开发者对这门语言是否有足够的经验,所以在这里首先要介绍的最佳实践就是如何在 Go 语言的项目或者服务中组织代码。...简单总结一下,单元测试的缺失不仅会意味着较低的工程质量,而且意味着重构的难以进行,一个有单元测试的项目尚且不能够保证重构前后的逻辑完全相同,一个没有单元测试的项目很可能本身的项目质量就堪忧,更不用说如何在不丢失业务逻辑的情况下进行重构了...Test 单元测试的最常见以及默认组织方式就是写在以 _test.go 结尾的文件中,所有的测试方法也都是以 Test 开头并且只接受一个 testing.T 类型的参数: func TestAuthor.../blog.go,它的二级目录就是 blog/,所以对应的 Mock 实现会被生成到 test/mocks/blog/ 目录中; 指定 package 为 mxxx,默认的 mock_xxx 看起来非常冗余...只依赖于 Blog 的实现,所以在这时我们就能够断言当前方法一定会返回 []Post{},这时我们的方法的返回值就只与传入的参数有关(虽然 ListPosts 方法没有入参),我们能够减少一次关注的上下文并保证测试的稳定和可信

    1.6K30
    领券