【发布时间】:2016-03-16 22:05:48
【问题描述】:
我正在创建一个 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 调用,这样它就永远不会知道其中有一个坏常量。确实没有解决此问题的好方法。
【问题讨论】:
-
I'm creating a gem that will have a constant in whatever app it is being used in (after a generator is run), but that constant doesn't exist in the gem itself- 这不是最好的主意。这里的用例是什么?通过配置在常量中提供对象会更好。
标签: ruby rspec rspec-mocks