2009-06-17 14 views
3

Ich versuche, einige Funktionstests in meiner Rails-Anwendung, und in der application_controller.rb dies muß ich schreiben:Wie kann ich die requestsubdomains-Methode in Rails stub oder mock?

before_filter :current_account 
def current_account 
    @current_account ||= Account.find_by_subdomain!(request.subdomians.first) 
end 

Bei Tests ausgeführt wird, request.subdomains nicht die gültigen Domänen enthält, die ich suche und macht es unmöglich, irgendwelche Funktionstests durchzuführen.

Ist es möglich, die current_account Methode zu stubben oder das Objekt request.subdomains zu verspotten?

Antwort

5

In Ihrem Funktionstest sollten Sie in der Lage sein zu tun (Mokka mit):

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

Für mich (und mit Rails 2.3.4), lautet die korrekte Aussage

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

da ich kann nicht direkt auf @request zugreifen.

1
@controller.instance_variable_set(:@request, OpenStruct.new({:subdomains => 'www'})) 

können Sie alles in Ruby zugreifen :)