在RSpec中,如何模拟使用常量参数调用的方法?

时间:2016-03-16 22:05:48

标签: ruby rspec rspec-mocks

我正在创建一个gem,它在任何应用程序中都会有一个常量(在生成器运行之后),但是这个常量在gem本身中不存在。我在gem中遇到RSpec问题,而不是跳过调用常量的代码部分。下面是一个简单的例子。

class Foo
  def self.do_something
    Bar.send(FakeConstant.name)  #Bar.send is a valid class and method
  end
end

foo_spec.rb

it 'does something'
  expect(Bar).to receive(send).and_return('skipped!')
  Foo.do_something
end

rspec输出

NameError: uninitialized constant FakeConstant

我想编写测试,以便它完全跳过Bar.send调用,以便它永远不会知道它内部有一个不好的常量。真的没有办法解决这个问题。

1 个答案:

答案 0 :(得分:2)

RSpec的provided方法允许您存根常量:

stub_const

更多信息:https://www.relishapp.com/rspec/rspec-mocks/docs/mutating-constants/stub-defined-constant

那就是说,我同意BroiSatse的说法,提供一种更有活力的方法将这些信息传递到你的代码中可能更好一些,这些信息可以通过较少的技巧在测试中进行操作。