我正在编写一个RSpec规范来测试Rails助手。问题是我正在测试的辅助方法取决于在不同帮助器中定义的方法。这对我来说可能是一个代码味道,但我正在为遗留代码添加测试,而且我不能重构。我该如何测试这个Rails助手?
module FancyHelper
def fancy_method
html = "hello"
html << another_fancy_method
html
end
end
module OtherHelper
def another_fancy_method
"world"
end
end
require "spec_helper"
describe FancyHelper do
describe "#fancy_method" do
it "does what it's supposed to" do
helper.fancy_method.should match("hello")
# NoMethodError: undefined method `another_fancy_method'
end
end
end
答案 0 :(得分:2)
这就是存根的用途。在测试依赖于其他帮助程序的帮助程序时,您需要存根另一个帮助程序以获得可预测的值并完成测试。
编辑:https://www.relishapp.com/rspec/rspec-mocks/docs/method-stubs感谢grantovich的新链接。