2009-11-28 19 views
6

Ben tanımlanan aşağıdaki filtreyi vardır:Rails testlerinde bir subdomain araması nasıl yapılır?

# 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 

ve benim testinde:

# users_controller_test.rb 
class UsersControllerTest < ActionController::TestCase 
    setup do 
    @request.host = "test.myapp.local" 
    end 
    # ... 
end 

Şimdi test Ben factory_girl kullanarak öncesinde tüm isteklere yük bir kukla hesap için alt alan adı olarak tanımlanmaktadır. Ancak, bu, @request öğesinin nil olduğunu söyleyerek bir nil nesne hatası veriyor. Kurulum bloğunu kaldırmak, find_account'ın bir hesap bulamadığından tüm testlerimin başarısız olmasına neden olur ve bu nedenle RecordNotFound hatasını atar.

Neyi yanlış yapıyorum?

+0

Sana bir çözüm bulabildin mi, aynı sorun var? – compostus

+0

Subdomain almak için request.subdomains kullandığınızı bulmak için kullanışlıdır, ben params [: subdomain] 'den alıyorum ama @ request.host veya @ request.env [' HTTP_HOST '] –

cevap

4

bu deneyin:

@request.env['HTTP_HOST'] = 'test.myapp.local' 
+0

'u ayarlıyorum. "@request.host = "test.myapp.local" AFAICS ile aynı ... – compostus