我正在尝试在我的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中的任何内容:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top