【问题标题】:How can I stub a function call with rspec?如何使用 rspec 存根函数调用?
【发布时间】:2023-03-29 00:15:01
【问题描述】:

我正在处理的代码如下:

class A
  def get_news

    when self.type = 'TypeA'
        param1 = 'a'
        param2 = 'b'
    else
        param1 = 'c'
        param2 = 'd'
    end

    @news ||= B.new.get_news(param1, param2)
  end
end

我希望能够测试是否将正确的参数传递给B#get_news。 你知道存根函数调用的方法吗,所以我可以测试它是否使用正确的参数调用,而不是测试是否使用正确的参数发出请求?

我已经花了一些时间,但我想不出办法。

【问题讨论】:

  • 你试过this吗?
  • @kgdesouz - 这不适用于仅在调用被测方法后创建的存根实例
  • 致 OP:调用 self.type = 'TypeA' 不会比较这两个值 - 它会分配它。请改用==

标签: ruby rspec stub


【解决方案1】:

B 的第一个存根 any_instance

B.any_instance.stubs(:get_news)

然后让规范调用您的方法。然后,您可以验证是否使用 expect_any_instance_of 调用了 get_news

expect_any_instance_of(B).to receive(:get_news).with(..., ...)

将任何值传递给with(),您希望get_news 方法随之而来。

【讨论】:

    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多