如果没有any_instance,如何断言未进行方法调用?

2023-12-20

我有一堂课,在一种情况下应该调用:my_method,但在另一种情况下不得调用方法:my_method。我想测试这两种情况。另外,我希望测试能够记录以下情况::my_method不应该被调用。

Using any_instance一般不鼓励 https://relishapp.com/rspec/rspec-mocks/docs/working-with-legacy-code/any-instance,所以我很乐意学习一种替代它的好方法。

此代码片段是我想要编写的测试类型的简化示例。

class TestSubject
  def call
    call_me
  end

   def call_me; end
   def never_mind; end
end

require 'rspec'

spec = RSpec.describe 'TestSubject' do
  describe '#call' do
    it 'calls #call_me' do
      expect_any_instance_of(TestSubject).to receive(:call_me)
      TestSubject.new.call
    end

    it 'does not call #never_mind' do
      expect_any_instance_of(TestSubject).not_to receive(:never_mind)
      TestSubject.new.call
    end
  end
end

spec.run # => true

它有效,但使用expect_any_instance_of方法,不推荐。

如何更换?


我会做类似的事情

describe TestSubject do
  describe '#call' do
    it 'does not call #something' do 
      subject = TestSubject.new
      allow(subject).to receive(:something)

      subject.call

      expect(subject).not_to have_received(:something)
    end
  end
end

希望这有帮助!

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

如果没有any_instance,如何断言未进行方法调用? 的相关文章

  • 使用 PayPal REST API,如何取消付款?

    使用 PayPal REST API 在客户点击 取消订单并返回网站 链接后 我似乎无法弄清楚如何取消付款 也许在生产模式下 PayPal 会自动取消这些付款 但在沙盒模式下它们似乎仍处于 已创建 状态 这一观察结果使我相信 我需要在返回网
  • ActiveRecord::Fixture::FixtureError:表“books”没有名为“loves”的列

    奇怪的 Rails 问题 我有一个Book实体和用户可以Love a book 我的所有其他模型都很好并且通过了所有测试 但是在生成新模型之后Love模型和设置装置时 我突然遇到大量这些错误 ActiveRecord Fixture Fix
  • 使用 Ruby Curb 传递 GET 参数

    我正在尝试使用 Curb curb rubyforge org 调用需要在 get 请求中提供参数的 RESTful API 我想获取一个像这样的URLhttp foo com bar xml bla blablabla 我希望能够做类似的
  • 将 gcov 与 CMake/CDash 结合使用的详细指南?

    我在我的项目中使用 CMake 并设置了 cdash 服务器以进行连续 夜间构建 一切运行良好 通过设置 crontab 我们可以将每小时 每晚的构建 测试结果自动上传到我们的 cdash 服务器 我的下一步是将测试覆盖率报告添加到构建中
  • 关于如何在 PHPUnit 中使用 setUp() 和tearDown() 有真实的例子吗?

    Methods setUp and tearDown 在每次测试之前和之后调用 但实际上 有没有任何真实的例子说明我为什么需要这个 检查其他人的测试 我总是看到类似的东西 public function setUp this gt test
  • ActionMailer 响应“501 5.5.4 无效参数”

    我正在 Ruby 2 0 0 上使用 Rails 4 开发一个应用程序 在 Devise 中注册后 应用程序会发送一封电子邮件 这是发送电子邮件的代码 应用程序 模型 sponsor rb after create send email t
  • 我应该在 Heroku 上部署 Ruby on Rails 应用程序吗?

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关于我自己的一些情况 我今年 24 岁 去年从北卡罗来纳州立大学毕业 获得了分析硕士学位 统计 数学之类的 我没有很强的编程背景 这对我的问题非
  • 需要帮助设置 ruby​​ on Rails javascript 运行时环境

    我在我的机器上设置 ruby on Rails 时遇到问题 我一直在关注 Agile Web Development with Rails 这本书 到目前为止一切都进展顺利 我遇到的问题是当我输入时 rails server 我收到以下错误
  • ActiveStorage上传大型base64编码字符串?

    如果我有在客户端上使用 JavaScript 编辑 生成的图像 例如 裁剪的照片或画布绘图的结果 是否可以使用 ActiveStorage 上传它 它通常是一个包含以下内容的大字符串 img src 它存储在 JavaScript 变量中
  • 有没有办法修复 Elastic Beanstalk 中的 Gem::LoadError

    我对 Elastic Beanstalk 比较陌生 因此希望得到一些建议 将 RoR 应用程序部署到 EB Puma 使用在 64 位 Amazon Linux 上运行的 Ruby 2 6 后 当我 转到环境 链接时 它不会呈现我的应用程序
  • 测试交互式Python程序

    我想知道python的哪些测试工具支持交互式程序的测试 例如 我有一个由以下人员启动的应用程序 python dummy program py gt gt Hi whats your name Joseph 我想要仪器Joseph所以我可以
  • 为什么私有辅助方法仍然可以在视图中访问?

    另一个 为什么会这样 的问题 我注意到私有辅助方法仍然可以在视图中访问 为什么 有没有办法防止这种情况 例如 当具有只能从另一个助手中调用的助手方法时 帮手是混合在一起的模块 http www ruby doc org docs Progr
  • Rails:控制文件存储缓存大小

    Rails 中基于文件的缓存的文档说 请注意 缓存将不断增长 直到磁盘已满 除非您 定期清除旧条目 不幸的是 它没有提供任何有关如何定期清除旧条目的信息 是否设置合适的值 expires in完成这项工作还是清除缓存背后还有其他某种黑魔法
  • 如何避免在嵌套 Rails 表单上保存空记录

    我正在使用nested form宝石给我的AddressBook关系 当用户清空现有值时Addr 我想删除那个Addr而不是用空白保存value class Person lt ActiveRecord Base has many addr
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • 使用 DataMapper 而不是 ActiveRecord [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Visual Studio 2015 Enterprise 附带测试自动化工具?

    管理层正在研究自动化测试 我们的 QA 主管想知道 Visual Studio 2015 Enterprise 和 Team Foundation Server 2012 是否附带了任何自动化测试工具 据我所知 微软提供了一套工具作为一个单
  • 如何从字符串中提取包含非英文字符的 URL?

    下面是一个简单的脚本 它采用其中包含德语 URL 的锚标记 并提取 URL encoding utf 8 require uri url URI extract a href M nchen a puts url http www exam
  • 如何停止和重新启动 Android 仪器测试中的活动?

    我正在尝试编写一个停止的 Android 活动仪器测试 onPause then onStop 并重新启动当前活动 我试过 activity finish activity getActivity 但这似乎不能正常工作 测试的目的是断言表单
  • Grails 测试默认在测试环境中运行吗?

    是否有必要提供这样的环境grails test test app Grails 测试确实运行在test默认环境 一般来说 Grails 命令默认为dev如果没有指定 但是test app命令覆盖环境test如果没有指定 并且war命令默认为

随机推荐

  • 使用 Outlook VBA 将电子邮件复制到剪贴板

    如何将电子邮件复制到剪贴板 然后将其粘贴到 Excel 中并保持表格完好无损 我正在使用 Outlook 2007 我想做相当于 Click on email gt Select All gt Copy gt Switch to Excel
  • 从 DOUBLE (15,2) 转换为 DECIMAL (15,2)

    mysql中double和decimal之间转换会不会有数据丢失 双精度数的精度约为 16 位小数 所以答案是否定的 因为这两种类型都被声明为具有 15 位十进制数字的精度 如果类型有 16 位数字 则取决于存储的数字 因为双精度数的精度实
  • SQL Server:表中的行更改了顺序

    我创建了带有这样的数字的表 如何找到数据间隙并插入 NULL 数据点而不是有间隙 https stackoverflow com questions 20911946 sql how to find gaps of data and ins
  • 如何在 MinGW 中启用实验性 C++11 并发功能?

    当尝试编译以下代码时 include
  • 浮动条形图

    我正在尝试绘制一个图 其中 x 轴是时间 y 轴是条形图 条形图覆盖特定时间段 如下所示 gt time 我有 2 个日期时间值列表 分别代表我想要涵盖的这些时间的开始和结束时间 到目前为止我已经 x np array dt datetim
  • ORA-00604: 递归 SQL 级别 1 发生错误

    我开始得到以下内容SQL exception我不知道这个异常的根本原因是什么 我也关门了dbconnection and prepared statement也 那么问题出在哪里呢 java sql SQLException ORA 006
  • Firestore - 如何检索集合的所有子集合

    我有一个关于 Firestore 的问题 我创建了一个 类别 集合 其中有几个文档 我创建了一个 建筑工地 子集合 我想从每个类别中检索所有子集合 但是当我尝试这样做时 useEffect gt const listConstruction
  • K8S iptables 与 pod 内容器的关系

    我已在容器中启用特权模式并向其添加规则 iptables N udp2rawDwrW 191630ce C0 iptables F udp2rawDwrW 191630ce C0 iptables I udp2rawDwrW 191630c
  • 为什么这个映射函数不会改变原始数组中的值?

    这是有问题的代码 const array 1 2 3 array map item gt item item 1 console log array 我以为item 第一 论证map方法是对数组中原始项目的引用 直接改变它会改变第一个数组的
  • 使用不同尺寸但相同数量的 HoG 特征的图像训练分类器

    我想用一些图像来训练我的分类器 其中一些图像具有不同的尺寸 它们都属于以下维度 100x50 50x100 64x72 72x64 然而 由于有 9 个方向箱和每个单元 8 个像素 每个单元都会生成 648 个 HoG 特征 实际上 我选择
  • 如何将askdirectory结果保存在我可以使用tkinter和OOP使用的变量中?

    我遇到了一些麻烦 我对 OOP 很陌生并且正在使用tkinter和一般的 GUI 我设法在互联网上找到了一些代码 并将它们组合在一起以创建一些东西 而我已经接近我想要的地方了 所以我想要的是一些帮助来解决这个问题 我如何分配结果askdir
  • 如何使用 Firebase 处理自动服务器端计算?

    也许我的问题应该重述为 如何将这些行为重构为 CRUD 这正是 Firebase 所擅长的 我知道 CRUD 效果很好 我还了解 Firebase 声明式安全模型如何让我确保服务器端 它应该存在的地方 具有适当的安全性 假设我有订阅服务 每
  • 不明确的 C++ 编译器错误

    以下代码无法编译 该错误似乎是对合并例程的某种不明确的调用 我的理解是 STL 在 std 命名空间中找到了一个合并例程 但据我所知 下面代码中的名称 merge 应该是唯一的 如果我将 merge 重命名为 xmerge 一切正常 问题可
  • DLL 和名称修改

    我有一个第三方 LIB 其中符号导出为纯 C cdecl 例如dumpbin exe SYMBOLS报道称 两者 imp nvmlInit and nvmlInit被出口 但是 在 Visual Studio 2010 中 当我尝试导入它们
  • 将 Varchar 列转换为日期时间格式 - SQL Server

    我有一个从 CSV 导入的数据表 如下所示 FirstTimeTaken LatestTimeTaken Market Outcome Odds NumberOfBets VolumeMatched InPlay 03 08 2013 15
  • JPA Hibernate 两个外键指向同一个表

    I ve found two topics this https stackoverflow com questions 5754243 how to map two foreign keys mapping to the same pri
  • log4net编译时未通过验证

    https github com apache log4net https github com apache log4net 我正在从上面的源代码编译log4net 但它没有通过验证 IL 错误 log4net dll log4net P
  • Swift 链接器错误:确实可用的 APIpresentationDimensions 的未定义符号

    我正在开发一个相机应用程序 它使用演示尺寸 API https developer apple com documentation coremedia cmformatdescription 3242280 presentationdime
  • 为什么 MongoDB 中索引的方向很重要?

    引用docs http www mongodb org display DOCS Indexes 创建索引时 与键关联的数字指定 索引的方向 因此它应该始终为 1 升序 或 1 降序 方向对于单个键索引或对于 随机访问检索 但如果您正在进行
  • 如果没有any_instance,如何断言未进行方法调用?

    我有一堂课 在一种情况下应该调用 my method 但在另一种情况下不得调用方法 my method 我想测试这两种情况 另外 我希望测试能够记录以下情况 my method不应该被调用 Using any instance一般不鼓励 h