我正在尝试在我的rails应用程序中编写一些功能测试,并在application_controller.rb中我有这个:
before_filter :current_account
def current_account
@current_account ||= Account.find_by_subdomain!(request.subdomians.first)
end
运行测试时,request.subdomains
不包含我正在寻找的有效子域,并且无法运行任何功能测试。
是否可以存根current_account
方法或模拟request.subdomains
对象?
答案 0 :(得分:5)
在功能测试中你应该能够(使用mocha):
@request.expects(:subdomains).returns(['www'])
答案 1 :(得分:1)
对我(以及Rails 2.3.4),正确的陈述是
@controller.request.expects(:subdomains).returns(['www'])
因为我无法直接访问@request。
答案 2 :(得分:1)
@controller.instance_variable_set(:@request, OpenStruct.new({:subdomains => 'www'}))
你可以访问ruby中的任何内容:)