Railsでrequest.subdomainsメソッドをスタブまたはモックするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1004832

質問

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