2012-09-19 15 views
5

W zależności od tego, która strona jest wyświetlana, chcę użyć innego obrazu do mojego logo; logo na stronie głównej jest większe. I jak za pomocą żądań specyfikacje przetestować zachowanie, więc chciałbym zrobić coś takiego:Jak przetestować obraz wyświetlany za pomocą programu rspec?

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 

a test prowadzi agains niektóre haml generowane HTML:

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

jednak to selektor nie działa . Czy to możliwe i jak?

+0

Co istotne HTML wygląda? – jdl

+1

Cóż, dla 100% TDD HTML nie powinien jeszcze wyglądać jak należy, ale będę w złym guście i dodałem go do mojego pytania;) –

+1

TDD oznacza, że ​​masz zero wyjścia. Jest wyraźnie jakiś HTML, który 'have_selector' sprawdza (lub powinien być). To wszystko, o co prosiłem. – jdl

Odpowiedz

15

Czy wypróbowałeś metodę have_css?

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

(Wybiera każdy <img> element, którego wartość atrybutu src zawiera podciąg "W3Schools")

+0

Zielona specyfikacja. Musisz kochać. Dzięki, src wydawało się bardziej niezawodnym atrybutem do przetestowania, ponieważ wolałbym, aby alty były nieco bardziej opisowe. Mógłby użyć tego w znacznie większej liczbie sytuacji, z '*', nigdy tak naprawdę nie używanym. –

+0

To działa dla mnie, ale co robi '*'? Wszystko, co mogę znaleźć, to fakt, że jest używany jako "splat", ale wygląda na to, że jest inny. Dzięki. – haley

+0

Selektor atrybutów '* =' oznacza, że ​​"atrybut zawiera podciąg". Zobacz [w3schools] (http://www.w3schools.com/cssref/css_selectors.asp), aby uzyskać przegląd możliwych selektorów. – hjblok

Powiązane problemy