RSpec 模拟对象示例

2023-12-20

我是模拟对象的新手,我正在尝试学习如何在 RSpec 中使用它们。有人可以发布一个关于如何使用 RSpec 模拟对象 API 的示例(hello RSpec Mock 对象世界类型示例)或链接(或任何其他参考)吗?


以下是我在 Rails 应用程序中为控制器测试所做的简单模拟示例:

before(:each) do
  @page = mock_model(Page)
  @page.stub!(:path)
  @page.stub!(:find_by_id)
  @page_type = mock_model(PageType)
  @page_type.stub!(:name)
  @page.stub!(:page_type).and_return(@page_type)
end

在本例中,我模拟了 Page 和 PageType 模型(对象),并删除了我调用的一些方法。

这使我能够运行如下测试:

it "should be successful" do
  Page.should_receive(:find_by_id).and_return(@page)
  get 'show', :id => 1
  response.should be_success
end

我知道这个答案更具体,但我希望它对您有所帮助。


Edit

好的,这是一个 hello world 示例......

给定以下脚本(hello.rb):

class Hello
  def say
    "hello world"
  end
end

我们可以创建以下规范(hello_spec.rb):

require 'rubygems'
require 'spec'

require File.dirname(__FILE__) + '/hello.rb'

describe Hello do
  context "saying hello" do 
    before(:each) do
      @hello = mock(Hello)
      @hello.stub!(:say).and_return("hello world")
    end

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

RSpec 模拟对象示例 的相关文章

随机推荐

  • 简单GDI项目的Mingw-w64和TDM-GCC之间的差异

    我需要在 Win64 上为 Win64 构建一个简单的非商业工具 处理 Windows GDI API 无交叉编译 MinGW 对我来说似乎是最好的选择 我过去已经使用过 32 位版本 至于 64 位 你能告诉我以下版本之间的主要区别吗 明
  • CSS:如何仅在支持悬停的设备上允许悬停状态?

    我一直在寻找一种方法来防止触摸设备 模拟 悬停事件 原因是您无法像在桌面上那样使用光标悬停在触摸设备上 这有时会影响用户体验 因为我在网上没有找到任何解决方案 所以我想在这里发布我自己的解决方案 我希望这会对某人有所帮助 我实现了仅将鼠标悬
  • cURL 从 FTPS 站点下载多个文件

    我正在使用 cURL 第一次使用它 从命令行从 ftps 站点下载文件 这就是我需要做的 从 ftps 站点下载与特定文件名匹配的多个文件 例如Filename csv 1998 zip所以我需要下载所有具有名称的文件Filename cs
  • Xcode 单元测试:Xcode 不会在断点处停止

    使用 Xcode 6 3 Beta 2 进行单元测试我遇到以下问题 当我进行单元测试时 单元测试模块中的断点可以工作 但被测试代码中的中断代码不会被忽略 有任何想法吗 我遇到了同样的问题 原因是方案设置 1 编辑您的方案 2 在左侧面板中选
  • 仅在node_modules中跳过库检查

    关于禁用错误输入中的错误有几个问题node modules e g this one https stackoverflow com questions 49906424 rxjs5 typescript typings fail 4991
  • jQuery UI 抖动 - 填充消失

    我遇到了这个小问题 我的包装纸里有一个盒子 我想来回摇晃它 效果很好 但是当我添加填充时 box动画打开时 填充会消失 这 box还有一个box sizing border box所以填充不会影响盒子的大小 如果我删除box sizing
  • 重定向而不更改 URL Apache

    我想将一个 URL 重定向到另一个 URL 而不更改浏览器 URL www example com abc xml 应重定向到 www example com abc xyz index htm file 1 但浏览器应该显示 www ex
  • 暂停代码执行但让 Excel 工作

    我正在制作一个宏 我想做以下事情 打开一个文件 等待文件填满数据 该文件使用单元格公式从外部数据库下载数据 下载大约需要15秒 20 秒后检查是否所有内容都已下载 如果没有 请再等待 10 秒 总共等待最多一分钟 如果所有内容都已下载 请存
  • Android ViewPager setCurrentItem 在 onResume 后不起作用

    我遇到了这个奇怪的问题ViewPager s setCurrentItem position false 工作得很好 然后我切换到另一个活动 在我回到第一个活动后 ViewPager总是以第一个项目结束 尽管我已经添加了setCurrent
  • 如何在 MySql 数据库中存储布尔值数组?

    就我而言 每个 项目 要么有属性 要么没有 这些属性可能有数百个 因此我需要每个项目最多 1000 个真 假位 有没有一种方法可以将这些位存储在项目的一个字段中 如果您正在寻找一种可搜索的方式来执行此操作 那么不行 几种可搜索的方法 涉及超
  • 将 Gatsby JS 站点部署到 Netlify 时,“运行命令时出错:构建脚本返回非零退出代码”

    我最近遇到了 Gatsby JS https github com gatsbyjs gatsby https github com gatsbyjs gatsby 并决定在生成器之上构建我的投资组合网站 所以我分叉了他们的入门网站 gat
  • 打印或死亡:如何检查 GPFS 网络安装的文件是否可用

    我有一个 Perl 脚本 用于写入位于 GPFS 网络安装存储点上的文件 有一个标准检查open FILE or die 文件系统宕机了 但是脚本并没有退出 它一直在努力写作 文件系统恢复后 Perl 脚本完成 如何检查文件系统是否可以写入
  • 来自 istream 的子流

    假设我有一个ifstream它代表一个包含许多聚合在一起的子文件的大文件 我希望能够创建一个 子 istream从较大的ifstream 给定大小和偏移量 表示文件的一部分 以便其他代码可以从该子流中读取 就好像它是一个独立的一样istre
  • 对于非非空初始化,生命周期在初始化之前开始,它解决了什么问题?

    当前的标准草案说 以前的标准有类似的措辞 基本生活 1 http www eel is c draft basic life 1 对象或引用的生命周期是该对象或引用的运行时属性 据说一个物体有非空的如果它是类或聚合类型 并且它或其子对象之一
  • 如何在 iOS 的照片拼贴中滑动时调整视图大小?

    我正在编写一个照片编辑器演示 用户可以水平或垂直滑动以将视图分割为他们想要的许多小视图 然后用户可以拖动每个视图的边框来重新调整视图的大小 问题是我不知道如何制作照片拼贴 用户可以拖动视图边框来改变视图的大小 我认为每个白色边框 如下图所示
  • Spark DataFrame `regexp_replace` 中的反向引用

    我最近试图回答一个question https stackoverflow com questions 40146760 splitting row in multiple row in spark shell 40148915 40148
  • 从 JavaScript + JSF 调用 Backing bean 方法 [重复]

    这个问题在这里已经有答案了 我想从 JSF 中的 javascript 函数调用支持 bean 方法 请您指导我如何实现这一目标 问候 拉维 克里什 因为 支持 bean 方法 id 服务器端 所以你需要向服务器发出请求 适合你的情况的更好
  • 有没有办法引用 yaml 数组中的特定元素?

    有没有办法引用 yaml 数组中的特定元素 例如 如果我有这样的 yaml node list one two three 我可以做这样的事情吗 first node node list 0 仅具有锚点和别名 例子 node list fi
  • ssis生成json文件删除返回

    我正在使用脚本任务从 sql 查询生成 json 文件 脚本任务中的c 代码 public void Main TODO Add your code here ConnectionManager cm string sqlString Sy
  • RSpec 模拟对象示例

    我是模拟对象的新手 我正在尝试学习如何在 RSpec 中使用它们 有人可以发布一个关于如何使用 RSpec 模拟对象 API 的示例 hello RSpec Mock 对象世界类型示例 或链接 或任何其他参考 吗 以下是我在 Rails 应