Ich verwende in meiner Anwendung Datentabellen, und die Datensätze werden von Ajax in die Tabelle geladen. Jetzt schreibe ich Tests für die Seite meiner Datentabelle und muss warten, bis die Datensätze geladen sind. Ich habe Capybara Webkit konfiguriert und js: true in meinen Test aufgenommen. aber wenn ich den Test ausführen bekomme ich diese FehlerCapybara Webkit ignorieren ActionController :: RoutingError
Failure/Error: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"
ActionController::RoutingError:
No route matches [GET] "/images/sort_both.png"
In meinem Browser ich die Konsole überprüft, und ich habe nicht diese Fehler, werden alle Bilder gefunden.
das ist meine Konfiguration von Webkit
Capybara.javascript_driver = :webkit
Capybara::Webkit.configure do |config|
config.raise_javascript_errors = false
end
Ich verwende wait_for_ajax Methode
def wait_for_ajax
Timeout.timeout(Capybara.default_max_wait_time) do
loop do
active = page.evaluate_script('jQuery.active')
break if active == 0
end
end
end
und dies ist mein Test
scenario 'check pending contributions', js: true do
login_as analyst, scope: :analyst
visit '/analyst/contributions'
wait_for_ajax
expect(page).to have_content "#{contribution.user_name}"
end
Und nun möchte ich diese Routing beheben Fehler, oder einfach ignorieren, weil ich nur die Logik testen möchte, nicht js Fehler.
danke für die Antworten, löste es mein Problem von ActionController :: RoutingError, aber mein Test funktioniert nicht. Meine Tabelle wird nicht ausgefüllt/Capybara wartet nicht im Test, so dass "# {contribution.user_name}" nicht gefunden wird. Aber danke für die nette und präzise Antwort. –
@MatheusMendes Ihr Test funktioniert nicht, ist ein anderes Problem, Sie können versuchen, 'Capybara.default_max_wait_time' zu erhöhen, falls es nicht lange genug auf die Antwort wartet. Wahrscheinlicher ist, dass Sie die Datensätze nicht erstellt haben, die in den Tests zurückgegeben werden (entweder durch Nicht-Ausführung oder durch Verwenden von "let", was "Beiträge" erzeugt, so dass es nicht in der DB ist, wenn Sie die Ajax-Ergebnisse erhalten) Sie haben den Transaktionstest nicht deaktiviert und setup_cleaner so eingerichtet, dass die Datensätze tatsächlich sowohl in den Test- als auch in den App-Threads verfügbar sind. Aber das ist wirklich eine separate Frage von diesem –
Danke für die Antwort @thomas, ich bin getestet, dass der Datensatz mit Hilfe von Pry erstellt wird, verwende ich lassen! Das erstellt die Datensätze am Anfang. Alle meine anderen Tests funktionieren so, dass meine Transaktionsprüfung eines Datenbank-Cleaners in Ordnung ist. Wird eine weitere Frage mit mehr Details posten, danke. –