我正在创建一个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
调用,以便它永远不会知道它内部有一个不好的常量。真的没有办法解决这个问题。
答案 0 :(得分:2)
RSpec的provided
方法允许您存根常量:
stub_const
更多信息:https://www.relishapp.com/rspec/rspec-mocks/docs/mutating-constants/stub-defined-constant
那就是说,我同意BroiSatse的说法,提供一种更有活力的方法将这些信息传递到你的代码中可能更好一些,这些信息可以通过较少的技巧在测试中进行操作。