Jak napisać stwierdzenie kapibary, które sprawdza obecność przycisku i jego stan włączony lub wyłączony?
Mam aplikację, która włącza / wyłącza przyciski w odpowiedzi na rzeczy, które mają miejsce w interfejsie użytkownika.
Mogę łatwo użyć kapibary do wykrycia, czy przycisk istnieje
should have_button 'save'
ale nie mam pojęcia, jak zweryfikować stan przycisku Zapisz. To jest:
Jak napisać stwierdzenie kapibary, które sprawdza obecność przyciskui stan włączony lub wyłączony?
Zrobiłem ze sobą hackowanie wyłączonego przycisku; aby włączyć, przypuszczam, że mogę sprawdzić, czy jest odpowiedni przycisk i czy nie ma pasującego wyłączonego przycisku. Ale to, delikatnie mówiąc, jest niezgrabne.
Wydaje się, że jest to taki podstawowy test interfejsu użytkownika, że jestem pewien, że coś przeoczyłem, ale nie mogę zrozumieć, co.
Postępuj zgodnie z odpowiedzią Gregatesa:
Jak wspomniałem w komentarzu, zachowanie kapibary zależy od podstawowego sterownika. Korzystamy z webkita i zwraca on wyniki „true” / „false”. Najwyraźniej inne sterowniki zwracają true / false. Ludzie w Capybara wiedzą o tym problemie (github.com/jnicklas/capybara/issues/705), ale czują (prawdopodobnie poprawnie), że nie jest to ich problem do rozwiązania.
Zamiast tego, że moje testy zależą od używanego przeze mnie sterownika, skończyło się na tworzeniu niestandardowego dopasowania:
RSpec::Matchers.define :be_enabled do
match do |actual|
driver_result = actual[:disabled]
# nil, false, or "false" will all satisfy this matcher
(driver_result.nil? || driver_result == false || driver_result == "false").should be_true
end
end
RSpec::Matchers.define :be_disabled do
match do |actual|
driver_result = actual[:disabled]
(driver_result == "disabled" || driver_result == true || driver_result == "true").should be_true
end
end
Następnie możesz wpisać:
user_license_area.find_button('Save').should be_disabled