有没有一种方法可以只为特定的参数创建存根方法.像这样的

boss.stub(:fire!).with(employee1).and_return(true)

如果任何其他员工被传递到boss.fire!方法,我将得到boss received unexpected message个错误,但我真正想要的是覆盖特定参数的方法,并将其留给所有其他人.

你知道怎么做吗?

推荐答案

您可以为fire!方法添加一个默认存根,该方法将调用原始实现:

boss.stub(:fire!).and_call_original
boss.stub(:fire!).with(employee1).and_return(true)

Rspec 3语法(@pk nb)

allow(boss).to receive(:fire!).and_call_original
allow(boss).to receive(:fire!).with(employee1).and_return(true)

Ruby相关问答推荐

从同名方法调用 ruby​​ 中的方法

Ruby中链表大小调用的时间复杂度

使用 Ruby,我如何访问和比较这些嵌套的数组值?

当 node 名称是/包含整数时,使用 Nokogiri 解析非 XML 文档

这是一个很好的测试?规范

是否可以在 Ruby 中使用正则表达式匹配字符串\b(退格字符)?

如何从 DateTime 值中删除区域?

如何过滤散列数组以仅获取另一个数组中的键?

Sinatra 与 EventMachine WebSockets 一起工作是否成功?

Ruby 中的内联注释

ruby:对两个或多个数组的对应成员求和

Rails 控制台中没有数据库连接

有没有办法在 RSpec 中取消存根?

在 Ruby 中,有没有办法使用 hash.each_with_index do |[k,v], i| 之类的东西?

在ruby中将字符串转换为十进制数

如何在器上下文中运行 ruby​​ 脚本?

Ruby:使用 ENV 变量(如果存在)的最简洁方法,否则使用默认值

通过多个分隔符拆分字符串

判断文件名是文件夹还是文件

你可以在Ruby中使用分号吗?