2016-04-17 10 views
-3

Ich habe diesen Test:Prevent dupliziert Code

it "redirects him to vice" do 
     get :show 
     uri_request_1 = Addressable::URI.parse(response.redirect_url) 
     redirects_to_vice_1 = uri_request_1.host == "vice.com" 

     get :show, relative_path: "/Fun/Facts.html" 
     uri_request_2 = Addressable::URI.parse(response.redirect_url) 
     redirects_to_vice_2 = uri_request_1.host == "vice.com" 

     assert redirects_to_vice_1 && redirects_to_vice_2 
    end 

es eine Menge Wiederholung hat. Wie kann ich diesen Test verkürzen?

Antwort

1

ich über das Hinzufügen eines Hilfsmethode denken würde:

def assert_redirection_to(host) 
    assert Addressable::URI.parse(response.redirect_url) == host 
end 

Mit einer solchen Methode Sie Ihre Tests verändern könnte:

describe 'without parameters' do 
    it 'redirects to vice.com' do 
    get :show 
    assert_redirection_to 'vice.com' 
    end 
end 

describe 'with parameters' do 
    it 'redirects to vice.com' 
    get :show, relative_path: '/Fun/Facts.html' 
    assert_redirection_to 'vice.com' 
    end 
end 
0
[[:show], [:show, relative_path: "/Fun/Facts.html"]].each do 
    |args| 
    get(*args) 
    assert Addressable::URI.parse(response.redirect_url).host == "vice.com" 
end 
+1

Im Allgemeinen sind die Antworten viel hilfreicher, wenn sie enthalten eine Erklärung dessen, was der Code tun soll, und warum dies das Problem löst, ohne andere einzuführen –