如何在Rspec 3功能规范中存根Rails助手/模块方法?

时间:2014-08-25 14:08:50

标签: ruby-on-rails rspec rspec3

我已经看到使用较旧的should_receive语法完成此操作,但我无法弄清楚如何在Rspec 3中存根Rails模块方法。

我试过这些:

OptionsHelper.stubs(:method).returns("something")
allow(OptionsHelper).to receive(:method).and_return "something"
allow_any_instance_of(ActionView::Base).to receive(:render_quick_help).and_return 'something'

但实际上没有一个方法存在。

1 个答案:

答案 0 :(得分:1)

allow_any_instance_of(ActionView::Base)

意味着它会期望该类的实例,而不是从它继承的类接收:method。

ActionView :: Base也是一个类,ActionView ::是一个模块。

此外,模块无法实例化,因此理论上allow_any_instance_of(ActionView).to ...将无效。

我知道这不是解决方案,但应该指出正确的方向。