如何在Rails中存根或模拟request.subdomains方法?
-
05-07-2019 - |
题
我正在尝试在我的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
对象?
解决方案
在功能测试中你应该能够(使用mocha):
@request.expects(:subdomains).returns(['www'])
其他提示
对我(以及Rails 2.3.4),正确的陈述是
@controller.request.expects(:subdomains).returns(['www'])
因为我无法直接访问@request。
@controller.instance_variable_set(:@request, OpenStruct.new({:subdomains => 'www'}))
你可以访问ruby中的任何内容:)
不隶属于 StackOverflow