2017-02-21 2 views
1

Wie kann ich das Vorhandensein meines Links überprüfen und dann darauf klicken? Ich habe versucht, die folgenden:minitest assert_select mit capybara click_link

assert_select "a", "show/hide comments" 
    click_link('show/hide comments') 

Ich bin mit Minitest, Capybara, und die 'Minitest-Schienen-Capybara' gem. Ich habe die folgenden Angaben enthalten Aussagen in meiner Integrationstest hinzugefügt:

include Capybara::DSL 
include Capybara::Assertions 

ich die folgende Fehlermeldung erhalten:

Unused parameters passed to Capybara::Queries::SelectorQuery : ["show/hide comments"] 
MethodError:   NoMethodError: undefined method `failure_message' for Capybara::Helpers:Module 
      test/integration/user_flow_test.rb:215:in `block in <class:UserFlowTest>' 

Kann ich sowohl Minitest des assert Link und Capybara der click_link benutzen?

Dank

+0

Ja, sie funktionieren gut zusammen. Was ist die Zeile "215", die diesen Fehler verursacht? – Iceman

+0

assert_select "a", "Kommentare ein-/ausblenden" Ich habe auch etwas vor der Fehlermeldung bemerkt: Nicht verwendete Parameter an Capybara :: Queries :: SelectorQuery: ["Kommentare anzeigen/verbergen"] vielleicht denkt es, dass es ein Capybara-Befehl ist minitest – Ayrad

+0

Nun, ich habe es nie wirklich auf diese Weise verwendet. Was ich tue, ist Capybara mit z.B. 'assert page.has_link? Kommentare anzeigen/verbergen – Iceman

Antwort

1

Erstens besteht keine Notwendigkeit, auf das Vorhandensein eines Elements zu behaupten, bevor es da click_link wird durch Klicken auf Capybara.default_max_wait_time Sekunden warten, bis für den Link auf der Seite angezeigt werden und es dann auf. Wenn der Link in dieser Zeit nicht erscheint, wird ein Fehler ausgelöst, so dass die Anwesenheit des Links überflüssig ist.

Der Fehler, den Sie erhalten, ist, weil Minitest-Capybara nicht kompatibel mit Capybara 2.9 + - https://github.com/wojtekmach/minitest-capybara/pull/17 ist - und die Tatsache, dass assert_select nicht 2 Zeichenfolgen als Parameter dauert. Es nimmt nur die ID, den Namen oder den Label-Text eines Select-Elements. Ich nehme an, das ist nicht die Methode, die Sie anrufen wollen.

+0

ok, also denke ich, es ist ein Fehler, danke. Wie für assert_select gemäß den Beispielen hier http://apidock.com/rails/ActionController/Assertions/SelectorAssertions/assert_select, können Sie zwei Zeichenfolgen ex übergeben: assert_select "title", "Willkommen" – Ayrad

+0

Ich verwende assert_select seit click_link (' show/hide comments ') gibt false zurück und ich wollte debuggen, aber wie du sagst ist es überflüssig. – Ayrad

+1

@Ayrad das ist die ActionController Assertions - nicht Minitest-Capybara, was Sie verwenden, indem Sie Capybara :: Behauptungen - https://github.com/wojtekmach/minitest-capybara/blob/master/lib/capybara/assertions. rb # L171 - die die gleichen Parameter wie Capybaras hat 'has_select?' –