3

我正在尝试在我的 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对象?

4

3 回答 3

5

在您的功能测试中,您应该能够做到(使用 mocha):

@request.expects(:subdomains).returns(['www'])
于 2009-06-17T08:25:33.207 回答
1

对我(以及 Rails 2.3.4)来说,正确的说法是

@controller.request.expects(:subdomains).returns(['www'])

因为我无法直接访问@request。

于 2010-01-25T16:57:55.307 回答
1
@controller.instance_variable_set(:@request, OpenStruct.new({:subdomains => 'www'}))

您可以在 ruby​​ 中访问任何内容:)

于 2010-10-19T18:00:57.843 回答