Sto usando Rails 3.2.8 conrails3-jquery-autocomplete: come testare con RSpec e Capybara?
- gioiello 'jquery-rails', '2.1.2'
- gemma 'Rails3-jquery-completamento automatico', '1.0.9'
- gioiello 'RSpec-rails', '' 2.11.4
- gioiello 'Capybara', '1.1.3'
- gemma 'capibara-WebKit', '' 0.12.1
ho recentemente convertito un elenco a discesa di selezione per un completamento automatico (noi ing rails3-jquery-autocomplete) e sto cercando di aggiornare le specifiche della mia richiesta per compilare il completamento automatico.
Il mio approccio è stato quello di creare un aiutante come mostrato nella 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
Se risulto che con Webkit, il test non riesce con questo messaggio:
expected css "ul.ui-autocomplete a:contains('Firstname Lastname')" to return something.
Se provo con selenio , mentre guardo il test procedere in Firefox, faccio non vedere l'elenco a discesa che appare. Aggiungere un sleep 3
per attendere che il menu a discesa non sia di aiuto.
Vedo here che c'è un problema correlato ma un po 'vecchio con capybara-webkit, qualcosa su quando un campo è compilato, è immediatamente sfocato, che ovviamente impedirebbe la visualizzazione dell'elenco di selezione automatico. Ma questo non sembra strambare con gli altri che hanno ottenuto questo lavoro.
È attualmente possibile testare un modulo che include un campo rails-jquery-autocomplete con RSpec e Capybara? Come? In caso contrario, esiste un modo per compilare manualmente il campo id
nascosto in modo da poter verificare che il modulo crei i dati corretti?
sì, non ha funzionato con Webkit. L'ho testato su capybara + poltergeist (webkit env), si è bloccato sulla convalida di have_selector. quando eseguo il debug con uno screencast, ho trovato che l'elemento di completamento automatico è stato generato, ma l'oggetto pagina non lo riconosce. – raykin
La soluzione dell'opzione 1 non funziona perché 'contains' non è valido selettori CSS W3C (questo è solo jQuery). L'ho risolto con la soluzione elencata in http: // StackOverflow.it/questions/6355586/testing-jquery-autocomplete-ui-with-cetriolo con il mio nome –