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