在 RSpec 中存根 RestClient 响应

2024-03-01

我有以下规格...

  describe "successful POST on /user/create" do
    it "should redirect to dashboard" do
      post '/user/create', {
          :name => "dave",
          :email => "[email protected] /cdn-cgi/l/email-protection",
          :password => "another_pass"
      }
      last_response.should be_redirect
      follow_redirect!
      last_request.url.should == 'http://example.org/dave/dashboard'
    end
  end

Sinatra 应用程序上的 post 方法使用rest-client 调用外部服务。我需要以某种方式存根其余客户端调用以发回预设响应,这样我就不必调用实际的 HTTP 调用。

我的应用程序代码是...

  post '/user/create' do
    user_name = params[:name]
    response = RestClient.post('http://localhost:1885/api/users/', params.to_json, :content_type => :json, :accept => :json)
    if response.code == 200
      redirect to "/#{user_name}/dashboard"
    else
      raise response.to_s
    end
  end

有人可以告诉我如何使用 RSpec 做到这一点吗?我用谷歌搜索了一下,发现很多博客文章都触及了表面,但我实际上找不到答案。我对 RSpec 时期还很陌生。

Thanks


Using a mock https://relishapp.com/rspec/rspec-mocks/docs对于响应,你可以这样做。一般来说,我对 rspec 和测试还很陌生,但这对我有用。

describe "successful POST on /user/create" do
  it "should redirect to dashboard" do
    RestClient = double
    response = double
    response.stub(:code) { 200 }
    RestClient.stub(:post) { response }

    post '/user/create', {
      :name => "dave",
      :email => "[email protected] /cdn-cgi/l/email-protection",
      :password => "another_pass"
    }
    last_response.should be_redirect
    follow_redirect!
    last_request.url.should == 'http://example.org/dave/dashboard'
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 RSpec 中存根 RestClient 响应 的相关文章

  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • Ruby require 'file' 不起作用,但 require './file' 可以。为什么?

    我有一个充满 ruby 文件的文件夹 当我尝试使用位于同一目录中的另一个文件中的一个文件时require file 我得到一个LoadError但是当我使用require file 一切正常 有人可以向我解释为什么会发生这种情况吗 如果有什
  • ruby 正则表达式匹配模式的多次出现

    我正在寻找构建一个 ruby 正则表达式来匹配模式的多次出现并将它们返回到数组中 模式很简单 即 两个左括号 一个或多个字符 后跟两个右括号 这就是我所做的 str Some random text lead first name and
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • 带有 OAuth2 的 YouTube API v3:更新和删除失败并出现“权限不足”错误

    我在尝试着update and delete视频使用YouTube API v3 https developers google com youtube v3 docs videos with OAuth2 用于身份验证 https dev
  • 使用 ruby​​ 调整动画 GIF 图像的大小?

    我正在尝试将 GIF 图像调整为不同的尺寸 我在 ruby 中使用 RMagick 库 但对于某些 gif 图像 即使我缩小 GIF 的大小 文件大小似乎也会增加 我正在以相同的纵横比调整图像图像的大小 这是我的代码 require rma
  • Ruby 中的 url_encode

    I read 的文档url encode http rdoc info stdlib erb 1 9 3 ERB Util 3Aurl encode 是否有一个表可以准确地告诉我哪个字符被编码为什么 使用url encode ERB s u
  • 我可以让这个 Ruby 代码更快并且/或使用更少的内存吗?

    我有一个Array of StringRuby 中的对象由如下单词组成 animals cat horse dog cat dog bird dog sheep chicken cow 我想将其转换为另一个Array of String对象
  • 比较 ruby​​ 哈希值[重复]

    这个问题在这里已经有答案了 可能的重复 如何比较两个哈希值 https stackoverflow com questions 4928789 how do i compare two hashes 我有两个 ruby 哈希值 本质上是模型
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • 从logstash中的文件名获取事件的时间戳

    我们有一个将事件写入文件的进程 没有时间戳 文件名本身带有时间戳后缀 该时间戳应用于文件中的所有事件 现在 我尝试使用logstash的输入文件插件来解析该文件 有没有一种方法可以将文件名获取到字段 以便我可以使用 gsub 过滤器提取时间
  • Ruby 动态变量名

    有没有办法在 Ruby 中创建具有动态名称的变量 我正在读取一个文件 当我找到一个字符串时 会生成一个哈希值 e g file File new games log r file lines do l l split do p if p 1
  • 使用正则表达式搜索 Ruby 数组

    你好 我有一个小的 ruby 函数 它可以分割出一个 Ruby 数组 如下所示 def rearrange arr from to sidx arr index from eidx arr index to arr sidx arr sid
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • 如何通过 Ruby 中的代理获取带有用户代理和超时的 URL?

    如果我需要通过某些方式获取 URL 我该如何获取 URLproxy 它必须有一个timeout最大 n 秒 和一个用户代理 require nokogiri require net http require rexml document d
  • 如何将文件的元素放入哈希中? -红宝石

    所以我有一个以下形式的文件 Key1 Value1 Key2 Value2 Key3 Value3 用制表符分隔 我的问题是如何打开这个文件并将其放入哈希中 我曾尝试这样做 fp File open file path fp each do
  • Ruby:用于检查 nil /false 条件语句的干净代码?

    我总是遇到这个Ruby问题 我想写得更干净 var a can be nil a value can also be nil a value has possible true or false value if not a nil not
  • ruby rspec 不能与 simplecov 一起使用

    我安装了 simplecov gem 并添加了 require simplecov SimpleCov start 到spec helper rb文件 现在如果我在some file spec rb文件中包含spec helper rb并尝
  • ruby 字符串到哈希值的转换

    我有一个这样的字符串 str uu p xx m yy n zz m 我想知道如何将给定的字符串转换为哈希值 即我的实际要求是 有多少个值 符号之前 有m n和p 我不需要计数 我需要一个精确的值 这样输出效果会更好 m gt xx zz

随机推荐

  • 为什么我无法更改 UILabel 的框架?

    我这两天一直在尝试修改一个框架UILabel 哪个 很荒谬 UILabel是一个 IBOutlet 但这不是原因 为什么它不起作用 我试图创建一个UILabel以编程方式和 它仍然不起作用 我是这样做的 self descriptionLa
  • 即使 Windows 重新启动后,C# AddFontResource 仍无法工作

    我正在尝试使用下面的代码使用 C 代码安装字体 调用InstallFont不会抛出任何异常并返回1 我认为这表明它已经安装了字体 但是 该字体既没有出现在 Windows Fonts 文件夹中的已安装字体列表中 也没有出现在检查 Insta
  • 在 R 中编辑 XML 文件

    我有一个包含以下元素的 xml 文档
  • 在 C 中有效地获取整数向量的绝对值

    任务是将 C 整数数组的每个元素设置为其绝对值 我正在努力尽可能高效地做到这一点 以下是我所做的一系列优化 请告诉我这些是否真的是优化 以及是否可以进行更多优化 该函数的第一个参数将是一个整数数组 第二个参数将是该数组的整数大小 这是标准实
  • Mathematica 中的条件数据操作

    我正在努力准备高效数据分析的最佳工具在数学中 我有大约 300 列和 100 000 行 最好的技巧是什么 删除 提取 或简单地 考虑 数据结构的部分 用于绘制例如 我能想到的最棘手的例子之一是 给定一个数据结构 对于第 2 列中的值等于
  • 将库添加到级联中

    您好 我正在开发一个应用程序来解压 blackberry10 中的文件 为了解压缩文件 我使用从 github 获得的 quazip 库代码 但我不知道如何将此库添加到我的项目中 任何人都可以让我知道如何将库添加到黑莓级联中 要将库添加到
  • Pandas 发送包含数据框作为可视表的电子邮件

    举个例子 df 1 1 2 3 5 df 2 10 20 30 50 df test pd concat pd DataFrame df 1 pd DataFrame df 2 axis 1 我如何通过 gmail 发送电子邮件 并使用此数
  • 值元组从 WebAPI 暴露错误的参数名称

    我正在使用网络 API 我有点懒 决定从我的控制器返回一个值元组 HttpGet Route AuthAPIRoutes GET MFA DEVICES public string Type string Value GetMultiFac
  • 是否可以使用 INNO 脚本移动现有目录/文件?

    我们最近对一个使用 INNO 脚本安装的应用程序进行了重大重组 不幸的是 该应用程序需要某些文件在不同版本之间保持不变 更不幸的是 这些文件的位置在这次重组期间发生了变化 最不幸的是 现在由我来制作一个 INNO 脚本片段 它将查看这些文件
  • swift 中的方法数组,没有引用循环

    我的目标是创建一个包含数组的类 数组的元素将是同一类的方法 喜欢 class MyClass lazy var functions self myFirstMethod self mySecondMethod deinit print De
  • 将 browser.element 获取到具有子项的页面对象中

    当我派生一个驱动程序实例以在浏览器之间发送消息时 我正在进行测试 我还使用页面对象来映射视图 在我的页面对象中 我有其他页面对象 其中一些对象继承自另一个页面对象 但是 当我分叉了一个驱动程序实例并有两个浏览器可以使用时 获取element
  • apache poi XSSFClientAnchor 未相对于 dx1、dy1、dx2、dy2 定位图片

    我正在尝试使用添加图像到Excelapache poi 版本3 16 我能够做到这一点HSSFWorkbook and XSSFWorkbook 但是当我尝试为图像添加间距时 即如果我设置dx1 dy1 dx2 dy2坐标在XSSFClie
  • Redis / Node.js - 2 个客户端(1 个发布/订阅)导致写入问题

    尝试创建两个客户端 一种是发布 订阅 另一种是标准连接 这不可能吗 必须有一种方法可以将其抽象为工作 基本上 如果我做一个get key运行 test js 后 我看到的只是 valueBefore 输出 node test js Repl
  • 地理编码地址 - 获取某个地址的区域(Google API)

    我有一个包含确切地址的数据库 街道 号码 城市 地区 地区 国家 但是 我想知道如果我们在纽约 是否有办法使用 Google API 来获取城市的区 例如 曼哈顿 所有其他信息我都已经在数据库中了 所以我只需要该地区 如果有的话 当然这只会
  • WPF自定义控件的ToolTip MultiBinding问题

    当我在 WPF 自定义控件中设置 ToolTip 绑定时 这种方式效果完美 public override void OnApplyTemplate base OnApplyTemplate SetBinding ToolTipProper
  • sbt-idea 1.2.0 未解决 SBT 0.12.0 和 Scala 2.10.0 问题?

    我正在创建一个新的 SBT 项目 以下是我的 SBT 文件的内容 构建属性 sbt version 0 12 0 插件 sbt addSbtPlugin com github mpeltonen sbt idea 1 2 0 构建 sbt
  • Java 字节码 DUP

    我想知道为什么以下字节码中的异常 用于抛出异常 是重复的 NEW java lang IllegalArgumentException DUP INVOKESPECIAL java lang IllegalArgumentException
  • PySpark 中的微秒时间戳

    我正在尝试使用 pyspark 中的以下语法将微秒字符串转换为时间戳 然而 我似乎得到了null当我转换时 我正在使用 Spark 2 2 我的字符串看起来像20180503 07 05 00 008288 我正在使用以下代码转换为时间戳
  • Azure Active Directory 应用程序权限更改延迟

    我正在使用 Azure Active Directory 为我的应用程序提供对 Microsoft Graph API 的访问权限 当我进行权限更改 例如 对各种类型数据的读 写访问权限 时 我注意到从保存更改到我能够通过 API 访问新数
  • 在 RSpec 中存根 RestClient 响应

    我有以下规格 describe successful POST on user create do it should redirect to dashboard do post user create name gt dave email