私は定義された次のフィルタを持っている:Railsテストでサブドメイン検索を偽装する方法は?
# application_controller.rb
class ApplicationController < ActionController::Base
before_filter :find_account
private
def find_account
@current_account = Account.find_by_subdomain!(request.subdomains.first)
end
end
と私のテストで:
# users_controller_test.rb
class UsersControllerTest < ActionController::TestCase
setup do
@request.host = "test.myapp.local"
end
# ...
end
今test
は私がfactory_girl
を使用して、すべての要求に先立ってロードダミーアカウントのサブドメインとして定義されます。しかし、これは@requestがnilであるという無名オブジェクトエラーを投げています。セットアップブロックを削除すると、find_accountがアカウントを見つけることができないため、すべてのテストが失敗し、RecordNotFound
というエラーがスローされます。
私は間違っていますか?
を、あなたは解決策を見つけましたか? – compostus
サブドメインを取得するためにrequest.subdomainsを使用していることがわかりました。私はparams [:サブドメイン]から取得していましたが、@ request.hostまたは@ request.env [HTTP_HOST ']を設定すると動作しません。 –