Używam Rails 3.2.8 zrails3-jquery-autocomplete: jak testować z RSpec i Capybara?
- gem 'jQuery szyn', '2.1.2'
- gem 'rails3-jQuery autouzupełniania', '1.0.9'
- gem 'rspec barierki', '2.11.4'
- gem 'Kapibara', '1.1.3'
- gem 'kapibary-WebKit', '0.12.1'
I niedawno konwertowane wybierz rozwijaną listę do autouzupełniania (nas ing rails3-jquery-autocomplete) i próbuję zaktualizować specyfikacje żądań, aby wypełnić autouzupełnianie.
Moje podejście było stworzenie pomocnika, jak pokazano na this gist:
def fill_autocomplete(field, options = {})
fill_in field, :with => options[:with]
selector = "ul.ui-autocomplete a:contains('#{options[:select]}')"
page.should have_selector selector
page.execute_script "$(\"#{selector}\").mouseenter().click()"
end
Gdybym sprawdzić, z Webkit, test nie powiedzie się z tej wiadomości:
expected css "ul.ui-autocomplete a:contains('Firstname Lastname')" to return something.
Gdybym test z selen , gdy oglądam test w Firefoksie, robię , a nie, pojawia się rozwijana lista wyboru. Dodawanie sleep 3
, aby czekać na rozwijanie nie pomaga.
Widzę here, że istnieje powiązany, ale nieco stary problem z kapibara-webkit, coś o tym, kiedy pole jest wypełnione, jest natychmiast rozmyte, co oczywiście uniemożliwiłoby wyświetlenie listy wyboru autouzupełniania. Ale to nie wydaje się jibe z innymi, którzy mają to do pracy.
Czy jest obecnie możliwe przetestowanie formularza zawierającego pole rails3-jquery-autocomplete z RSpec i Capybara? W jaki sposób? Jeśli nie, czy istnieje sposób ręcznego wypełnienia odpowiedniego, ukrytego pola id
, aby móc przetestować, czy formularz tworzy poprawne dane?
Tak, to nie działa z Webkit. Testuję to na capybara + poltergeist (webkit env), który rozbił się na sprawdzeniu poprawności have_selector. kiedy debuguję go, wykonując screencast, stwierdziłem, że element autouzupełniania został wygenerowany, ale obiekt strony nie może go rozpoznać – raykin
Twoje rozwiązanie 1 opcji nie działa z powodu faktu, że ': zawiera' nie jest prawidłowymi selektorami CSS W3C (to jest tylko jQuery). Naprawiłem to za pomocą rozwiązania wymienionego w http: // stackoverflow.com/questions/6355586/testing-jquery-autocomplete-ui-with-cucumber pod moim imieniem –