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

Rails 4.2 rspec -预期http状态为201,但始终为200

Rails是一种基于Ruby语言的开发框架,用于构建Web应用程序。RSpec是Rails中常用的测试框架,用于编写和运行单元测试和集成测试。

在Rails 4.2中,RSpec可以用于测试HTTP请求的状态码。预期的HTTP状态码201表示"Created",表示成功创建了一个资源。然而,你的测试结果始终返回状态码200,表示"OK",表示请求成功。

造成这种情况的可能原因有:

  1. 代码逻辑错误:检查你的代码逻辑,确保在创建资源时返回了正确的状态码。可能是由于错误的条件判断或逻辑错误导致的。
  2. 测试用例错误:检查你的测试用例,确保你正确设置了预期的状态码。可能是由于错误的预期设置或测试用例编写错误导致的。
  3. 网络请求问题:检查网络请求是否正确发送和接收。可能是由于网络连接问题或服务器配置问题导致的。

为了解决这个问题,你可以采取以下步骤:

  1. 检查代码逻辑:仔细检查你的代码逻辑,确保在创建资源时返回了正确的状态码。可以使用Rails的内置方法renderredirect_to来设置正确的状态码。
  2. 检查测试用例:仔细检查你的测试用例,确保你正确设置了预期的状态码。可以使用RSpec的expect语法来设置预期状态码,并使用Rails的内置方法postput来发送请求。
  3. 调试网络请求:使用调试工具(如浏览器开发者工具或命令行工具)检查网络请求是否正确发送和接收。确保请求的URL、方法和参数都正确,并且服务器能够正确处理请求。

如果你需要更详细的帮助,可以参考以下资源:

  • Rails官方文档:https://rubyonrails.org/
  • RSpec官方文档:https://rspec.info/
  • Rails HTTP状态码:https://guides.rubyonrails.org/layouts_and_rendering.html#the-status-option
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

“小众”之美——Ruby在QA自动化中的应用

扩展性 支持Java平台的扩展 支持HTTP/RPC接口,可根据开发框架扩展 框架基于Rspec,支持多种验证方式(Build-In Matcher),及支持自定义Matcher,目前实现了JSON去噪的...,预期响应另分一个Sheet,子节点和list节点的内容写在对应的Sheet中,动态值均置空,在接口数据类中处理,orderInfo节点和payInfo节点均另写在新的Sheet中,用于单接口数据驱动的...写在后面 以上半年左右时间内,外卖上海QA团队在自动化工作上的一些实践,总的来说,达到一定预期效果,整理这篇文章分享一些心得。所谓的主流与小众并非绝对,主要从几个方面衡量: 1. 应用领域。...Ruby因为性能问题,始终不太主流,并不意味着它一无是处,用在测试领域,开发效率、DSL的友好性、语言的粘合性、使用者的学习低成本,都能发挥很大的优势。 2. 使用群体。...不同的使用群体对于技能掌握的要求也是不同的,能达到同样效果甚至超过预期则就可以选择哪怕“小众”的方案。 3. 环境背景。

1.8K30

​你回去了解一下RESTful风格

id=l 而采用RESTful风格后,其URL请求:http://......如果按照HTTP方法的语义来暴露资源,那么接口将会拥有安全性和幂等性的特性,例如GET和HEAD请求都是安全的, 无论请求多少次,都不会改变服务器状态。...(OK)- 如果现有资源已被更改 201(created)- 如果新资源被创建 202(accepted)- 已接受处理请求尚未完成(异步处理) 301(Moved Prermanently)- 资源的...用客户端管理的实例号创建一个资源 通过替换的方式更新资源 如果未被修改,则更新资源(乐观锁) 200 (OK)- 如果已存在资源被更改 201 (created)- 如果新资源被创建 301(Moved...我认为,这是因为rails默认使用服务端生成的ID作为URI的缘故,而不少人就是通过rails实践REST的,所以很容易造成这种误解。 客户端不一定都支持这些HTTP方法吧?

80710

Effective Testing with RSpec 3 (第一部分:入门)

rspec-expectations检查代码属性提供了可读,强大的语法。 •rspec-mocks可以轻松地将您正在测试的代码与系统的其余部分隔离开来。...这些术语是半可互换的,每个都有不同的侧重点: •测试验证了一些代码是否正常工作。 •规范描述了一些代码的期望行为。 •一个示例显示了如何使用特定的API。...再看一下我们在这个片段中使用的三种RSpec方法: •RSpec.describe创建一个示例组(一组相关测试)。 •它创建了一个示例(单个测试)。 •期望验证预期结果(断言)。...充分利用RSpec 三明治的规格有两个目的: •记录三明治应该做什么 •检查三明治是否符合预期 我们认为这个规范非常适合第一个目的。 即使是项目新手也可以阅读这段代码,看看三明治应该很美味。...2. http://xp123.com/articles/3a-arrange-act-assert/ 查看期望行。 它读起来几乎就像它的英文等价物:“我们希望三明治的味道很美味。”

2K30

GitLab CI CD管道配置参考 .gitlab-ci.yml文件定义字段

定义的文件include: 与那些深深的合并.gitlab-ci.yml。 .gitlab-ci.yml无论include关键字的位置如何,始终首先评估并与的内容合并。...: - rake rspec 这将导致以下rspec工作: rspec: variables: URL: "http://docker-url.internal" IMPORTANT_VAR...请注意,在上面的示例中: variables部分已合并,URL: "http://my-url.internal" 已被覆盖URL: "http://docker-url.internal"。...script尚未合并,script: ['echo "Hello world!"']已被覆盖script: ['rake rspec']。可以使用YAML锚点合并数组。...这种关系可以描述: (任何参考)或(任何变量)或(任何变化)或(如果Kubernetes处于活动状态) 在以下示例中,如果满足以下任一条件,test则不会创建作业: 管道运行在master

21.8K20

RESTful 架构详解

(OK)- 如果现有资源已被更改 201(created)- 如果新资源被创建 202(accepted)- 已接受处理请求尚未完成(异步处理) 301(Moved Permanently)- 资源的...用客户端管理的实例号创建一个资源 通过替换的方式更新资源 如果未被修改,则更新资源(乐观锁) 200 (OK)- 如果已存在资源被更改 201 (created)- 如果新资源被创建 301(Moved...我认为,这是因为rails默认使用服务端生成的ID作为URI的缘故,而不少人就是通过rails实践REST的,所以很容易造成这种误解。 客户端不一定都支持这些HTTP方法吧?...若服务器不支持,它应该返回一个HTTP 406响应,表示拒绝处理该请求。下面以github例,展示了一个请求XML表述资源的结果: ?...2. 4 资源的链接 我们知道REST是使用标准的HTTP方法来操作资源的,仅仅因此就理解成带CURD的Web数据库架构就太过于简单了。

96220

RESTful架构详解 转

(OK)- 如果现有资源已被更改 201(created)- 如果新资源被创建 202(accepted)- 已接受处理请求尚未完成(异步处理) 301(Moved Permanently)- 资源的...用客户端管理的实例号创建一个资源 通过替换的方式更新资源 如果未被修改,则更新资源(乐观锁) 200 (OK)- 如果已存在资源被更改 201 (created)- 如果新资源被创建 301(Moved...我认为,这是因为rails默认使用服务端生成的ID作为URI的缘故,而不少人就是通过rails实践REST的,所以很容易造成这种误解。 客户端不一定都支持这些HTTP方法吧?...若服务器不支持,它应该返回一个HTTP 406响应,表示拒绝处理该请求。下面以github例,展示了一个请求XML表述资源的结果: ?...2. 4 资源的链接 我 们知道REST是使用标准的HTTP方法来操作资源的,仅仅因此就理解成带CURD的Web数据库架构就太过于简单了。

82131

架构的演进, 阿里资深Java工程师表述架构的腐化之谜

系统在混乱的状态下继续缓慢地混乱——这个过程远比本文写作的时间要长很多,之间会有反复,据我观察,在不超过1年的时间内,无论采用何种技术框架,应用何种架构,这个过程似乎是不可抗拒的宿命。...JRebel能够将需要编译的Java语言变成修改、保存立即生效,减少了大量的修改、保存、重新编译、部署的时间;Spork能够启动一个Server,将RSpec测试相关的代码缓存于其中,这样在运行RSpec...这减少代码库容量以及解决可能出现的低级Bug提供了帮助。 Rails则是另外一个极端的例子。Rails带来的不仅仅是开发的便利,还带来了人们在Linux世界多年的部署经验。...去年有100个功能,今年就有200个。去年有10万行代码,今年也许就有20万行。去年2G 内存的机器能够正常开发,今年似乎得加倍才行。去年有15个开发人员,今年就到30个了。...抽象出极少的、真正有效公用的信息,在系统之间通过HTTP POST.。其他的系统完全可以独立开发、部署,甚至针对应用访问的情况进行特定的部署优化。

70050

架构的演进,阿里资深Java工程师表述架构的腐化之谜

系统在混乱的状态下继续缓慢地混乱——这个过程远比本文写作的时间要长很多,之间会有反复,据我观察,在不超过1年的时间内,无论采用何种技术框架,应用何种架构,这个过程似乎是不可抗拒的宿命。...JRebel能够将需要编译的Java语言变成修改、保存立即生效,减少了大量的修改、保存、重新编译、部署的时间;Spork能够启动一个Server,将RSpec测试相关的代码缓存于其中,这样在运行RSpec...这减少代码库容量以及解决可能出现的低级Bug提供了帮助。 Rails则是另外一个极端的例子。Rails带来的不仅仅是开发的便利,还带来了人们在Linux世界多年的部署经验。...去年有100个功能,今年就有200个。去年有10万行代码,今年也许就有20万行。去年2G 内存的机器能够正常开发,今年似乎得加倍才行。去年有15个开发人员,今年就到30个了。...之前的代码结构可能如下,(这里以SVN例,因为SVN有明确的trunk/branches/tags目录结构。

1.1K100

Google 是如何设计 Ruby Serverless Runtime 的?

一种实现 Ruby Serverless 化的方式 Serverless 产品提供 Ruby 支持比您预期的要复杂得多。...当然,这种想法是使用一种编程模型,该模型不以 Web 服务器中心,而是以函数中心:无状态的代码片段,它们接受输入参数并返回结果。...方法隐含对象,对象以实例变量的形式携带状态,这些状态在无状态 FaaS 环境中可能无法正常工作。回避方法是一种微妙但有效的语法方法,可以阻止我们知道的存在问题的实践。...流行的框架,如 Rails,承认了这一点,并通过提供测试工具和脚手架作为框架的一部分来鼓励主动测试,Google Cloud Functions 的 Ruby 运行时也遵循了这一点, Serverless...该方法和其他 helper 方法定义在 FunctionsFramework::Testing 模块中,可以包含在 minitest 或 rspec 测试中。

2.2K60

架构的演进,阿里资深Java工程师表述架构的腐化之谜

系统在混乱的状态下继续缓慢地混乱——这个过程远比本文写作的时间要长很多,之间会有反复,据我观察,在不超过1年的时间内,无论采用何种技术框架,应用何种架构,这个过程似乎是不可抗拒的宿命。...JRebel能够将需要编译的Java语言变成修改、保存立即生效,减少了大量的修改、保存、重新编译、部署的时间;Spork能够启动一个Server,将RSpec测试相关的代码缓存于其中,这样在运行RSpec...这减少代码库容量以及解决可能出现的低级Bug提供了帮助。 Rails则是另外一个极端的例子。Rails带来的不仅仅是开发的便利,还带来了人们在Linux世界多年的部署经验。...去年有100个功能,今年就有200个。去年有10万行代码,今年也许就有20万行。去年2G 内存的机器能够正常开发,今年似乎得加倍才行。去年有15个开发人员,今年就到30个了。...之前的代码结构可能如下,(这里以SVN例,因为SVN有明确的trunk/branches/tags目录结构。

1.3K120

如何设计出优秀的Restful API?

这就是HTTP方法(GET,POST,DELETE,PUT)(也成为动词)扮角色的地方!API接口的资源应始终复数,如果我们要访问资源的一个实例,我们可以在URL中传递id或者name之类的。...服务器应始终返回正确的状态代码。 很多人喜欢把错误信息放在返回值中,典型的Code和Message,其实比较Low。...下面是Http状态码,可以合理利用处理各种请求反馈,将http自身的错误和服务器内部的错误,有一个很好的区分。 2xx(成功类别) 200 Ok表示GET,PUT或POST成功的标准HTTP响应。...201 Created每当创建新实例时,都应返回此状态代码。 例如,使用POST方法创建新实例时,应始返回201状态代码。 204 No Content表示请求已成功处理,但未返回任何内容。...自身的方法表示增删改查资源, GET:查询,POST:新增,PUT:更新,DELETE:删除 7,合理使用HTTP状态码,200201,400,401,403,500。

1K10

REST API 设计最佳实践:如何构建、设计和使用 API ?

特别关注 HTTP 状态码 这一点非常重要,如果你从这篇文章中只记住一件事,那可能就是它了。 你的API最糟糕的事情莫过于返回一个带有200 OK状态码的错误响应。...状态码返回200 OK,但我不能完全确定它有没有处理我的请求失败。...你应该始终保持一致地使用 HTTP 状态码 一旦你掌握了HTTP状态码,就应该力求始终如一地使用它们。...例如,如果你选择某个POST端点返回201 Created,那么对于每个POST端点都应使用相同的HTTP状态码。为什么?因为消费者不应该担心在哪种情况下哪个方法在哪个端点上会返回哪个状态码。...通常,我遵循以下模式: GET: 200 OK PUT: 200 OK POST: 201 Created PATCH: 200 OK DELETE: 204 No Content 8.

35440

网络编程之HTTP状态码详解

一、状态码分类 HTTP状态码分为如下5类 总体范围 已定义范围 类别 100~199 100~101 信息 200~299 200~206 成功 300~399 300~305 重定向 400~499..., 客户端应该继续请求 101 Switching Protocols( 切换协议) 服务器正根据客户端的指示将协议切换成 Update首部列出的协议 200~299(已定义:200~206) 状态码...原因短语 含义 200 OK 服务器已成功处理请求 201 Created( 已创建) 对那些要服务器创建对象的请求来说, 资源已创建完毕 202 Accepted( 已接受) 请求已接受, 服务器尚未处理...,或者未得到满足 417 Expectation Failed( 无法满足期望) 请求的 Expect 首部包含了一个预期内容, 服务器无法满足 500~599(已定义500~505) 状态码 原因短语...过一段时间就可以恢复服务 504 Gateway Timeout( 网关超时) 与状态码 408 类似, 但是响应来自网关或代理, 此网关或代理在等待另一台服务器的响应时出现了超时 505 HTTP

75440

小结HTTP状态

image.png 作为一个web开发工程师,我们平时都会和诸如200, 304, 404, 501等状态码打交道,那么它们是什么意思呢?...2xxs状态200 OK:请求成功。成功的含义取决于HTTP方法: GET:资源已被提取并在消息正文中传输。 HEAD:实体标头位于消息正文中。 POST:描述动作结果的资源在消息体中传输。...(方法不安全,一般不用) 说到了HTTP的方法,可以戳HTTP请求方法这个解析教程来了解一下。 201 Created:请求已经成功,并因此创建了一个新的资源。...与204响应不同,返回此状态码的响应要求请求者重置文档视图。 备注:使用的最多的2xxs状态码是200和204,在遇到204状态码的时候,要注意一下自己发的请求是不是复杂请求。...比如,使用POST请求始终就该用POST请求。 备注:307和303已经替代了历史上的302状态码,现在看到的临时重定向的状态码是307。详细内容可到维基百科上查看。

1.1K20

Ansible和Docker的作用和用法

当然,你也会收获一些实践知识,那就是如何通过部署 Ansible 和 Docker 来 Rails 应用搭建一个完整的服务器环境。 也许有人会问:你怎么不去用 Heroku?...Ansible批量搭建LAMP环境 http://www.linuxidc.com/Linux/2014-10/108264.htm Ansible :一个配置管理和IT自动化工具  http://www.linuxidc.com...和应用的依赖性 我发现有一点挺有意思的:大部分开发者非常了解他们的应用需要什么版本的编程语言,这些语言依赖关系有多种形式:Python 的包、Ruby 的打包系统 gems、node.js 的模块等等,与数据库或消息队列这种重要的概念相比起来...=test bundle exec rake db:create db:migrate && bundle exec rspec'>/test-terrabox ;\ echo '. /.profile...最后,Dockerfile 应用指定了一个端口号,将容器内部端口号为3000的端口映射到主机(运行着 Docker 的机器)的一个随机分配的端口上。

2.1K20

logstash input插件开发

如果公司内部开发的数据库或其它存储类的服务不能和开源产品在接口协议上兼容,比如腾讯自研的消息队列服务CMQ不依赖于其它的开源消息队列产品,所以不能直接使用logstash的logstash-input-kafka...本文以开发logstash的cos input插件例,介绍如何开发logstash的input插件。...logstash-input-example.gemspec,增加了对com.qcloud:cos_api包以及jar-dependencies包的依赖,jar-dependencies用于在ruby环境中管理jar包,并且可以跟踪jar包的加载状态...是一个ruby测试库,通过bundle命令执行rspec: bundle exec rspec 如果cos.rb中的代码没有语法或运行时错误,则会出现如果信息表明测试成功: Finished in 0.8022.../1.1\" 200 612 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like

4K61

使用Postman发送POST请求的指南

POST请求是一种HTTP请求方法,用于将数据发送到服务器以创建或更新资源。与GET请求不同,POST请求通常包含在请求体(body)中发送的数据。...创建新请求打开Postman后,点击左上角的“New”按钮,然后选择“HTTP Request”来创建一个新的请求。设置请求类型和URL在新请求窗口中,将请求类型设置“POST”。...查看响应在请求下方的窗口中,你可以查看服务器的响应,包括状态码、响应头和响应体。确保响应符合预期,例如状态200 OK或201 Created,以及返回的数据内容正确。...具体步骤如下:创建新请求,并将请求类型设置POST,URLhttps://api.example.com/register。...如果服务器返回状态201 Created,并且响应体包含注册成功的消息,那么表示请求成功。总结使用Postman发送POST请求是进行API测试的基本技能。

23910

HTTP状态

http状态码解释 HTTP 状态码分为 5 类。...Update首部列出的协议 200 OK 服务器已成功处理请求 201 Created(已创建) 对那些要服务器创建对象的请求来说,资源已创建完毕 202 Accepted(已接受) 请求已接受,服务器尚未处理...,在客户端获得资源访问权之前,请它进行身份认证 402 Payment Required(要求付款) 当前此状态码并未使用,是未来使用预留的 403 Forbidden(禁止) 服务器拒绝了请求 404...,或者未得到满足 417 Expectation Failed(无法满足期望) 请求的 Expect 首部包含了一个预期内容,服务器无法满足 500 Internal Server Error(内部服务器错误...503 Service Unavailable(未提供此服务) 服务器目前无法请求提供服务,过一段时间就可以恢复服务 504 Gateway Timeout(网关超时) 与状态码 408 类似,但是响应来自网关或代理

1K10
领券