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

如何存根rspec中被测类内部实例化的类

在RSpec中,如果要存根(stub)被测类内部实例化的类,可以使用RSpec的allow_any_instance_of方法。该方法允许我们为被测类的实例化对象设置一个存根,以便在测试中替代原始的实例化行为。

下面是一个示例代码:

代码语言:ruby
复制
class MyClass
  def initialize
    @dependency = Dependency.new
  end

  def do_something
    @dependency.do_something_else
  end
end

class Dependency
  def do_something_else
    # 实际的实现
  end
end

RSpec.describe MyClass do
  describe '#do_something' do
    it 'calls do_something_else on the dependency' do
      # 存根被测类内部实例化的类
      allow_any_instance_of(Dependency).to receive(:do_something_else)

      my_object = MyClass.new
      my_object.do_something

      # 断言被存根的方法被调用
      expect_any_instance_of(Dependency).to have_received(:do_something_else)
    end
  end
end

在上述示例中,我们使用allow_any_instance_of方法为Dependency类的实例化对象设置了一个存根。这样,在测试中,当MyClass的实例调用do_something方法时,实际上不会执行Dependency类的do_something_else方法,而是使用存根代替。

这种方法适用于需要在测试中控制被测类内部实例化对象行为的情况。通过存根,我们可以模拟各种场景,例如模拟依赖类的返回值、模拟依赖类的异常等,以确保被测类的行为符合预期。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券