2012-09-19 10 views
5

Je nachdem, welche Seite gerade angezeigt wird, möchte ich ein anderes Bild für mein Logo verwenden. Das Logo auf der Homepage ist größer. Ich mag mit Anforderungsspezifikationen Verhalten zu testen, so möchte ich, so etwas tun:Wie testen, welches Bild mit rspec angezeigt wird?

describe 'Visit "advertentie/1"' do 
    it 'contains add details' do 
     add = create(:add_with_photos) 
     visit add_path add 
     page.should have_selector('img[alt="logo-small"]') # CHECK IMAGE ALT 
     page.should have_content(add.name) 
    end 
end 

und der Test läuft agains einige haml html generiert:

<div class='logo-wrapper'> 
    <h1> 
    <a href="/"><img alt="Logo-big" src="/assets/logo-small.png" /> 
    <br> 
    <span>UpMarket</span> 
    </a> 
    </h1> 
</div> 

jedoch diese Wähler nicht funktioniert . Ist das möglich und wie?

+0

Was bedeutet die relevanten HTML aussehen? – jdl

+1

Gut für eine 100% TDD sollte der HTML natürlich noch nichts aussehen, aber ich werde ein schlechter Weg sein und es meiner Frage trotzdem hinzufügen;) –

+1

TDD bedeutet, dass Sie keine Ausgabe haben. Es gibt eindeutig HTML, die 'have_selector' überprüft (oder es sollte). Das ist alles was ich wollte. – jdl

Antwort

15

Haben Sie die have_css Methode versucht?

have_css("img[src*='w3schools']") 

(Wählt jedes <img> Element, dessen src-Attribut-Wert enthält die Teilkette "w3schools")

+0

Grüne Spezifikationen. Ich muss sie lieben. Danke, src schien eine zuverlässigere Eigenschaft zum Testen zu sein, da ich es vorziehen würde, dass die Alternativen ein bisschen beschreibender sind. Könnte dies auch in vielen anderen Situationen verwenden, mit dem '*', das nie wirklich benutzt wurde. –

+0

Das funktioniert für mich aber was macht das '*'? Alles, was ich finden kann ist, dass es als "Splat" verwendet wird, aber das scheint anders zu sein. Vielen Dank. – haley

+0

Der Attribut-Selektor '* = 'bedeutet' das Attribut enthält den Teilstring '. Unter [w3schools] (http://www.w3schools.com/cssref/css_selectors.asp) finden Sie eine Übersicht über mögliche Selektoren. – hjblok