In meiner Datei dances.html.erb
, mein Test Interpretieren beschwert zu laden, bevor:Wie Skripte zwingen, html in Rails Capybara JS testet
Failures:
1) Creating dances creates a new dance with non-javascript data
Failure/Error: visit '/dances/new'
Capybara::Poltergeist::JavascriptError:
One or more errors were raised in the Javascript code on the page. If you don't care about these errors, you can ignore them by setting js_errors: false in your Poltergeist configuration (see documentation for details).
ReferenceError: Can't find variable: $
ReferenceError: Can't find variable: $
at http://127.0.0.1:33842/dances/new:81 in global code
Ich denke, der HTML-Code, anstößigen sieht aus wie
<script>
$("#choreographer-autocomplete").autocomplete({
source: <%= a_to_safe_str(Choreographer.all.map &:name) %>,
autoFocus: true,
minLength: 0
});
$("#start-type-autocomplete").autocomplete({
source: ["improper","Becket","Becket ccw","four face four","square dance","indecent"],
autoFocus: true,
minLength: 0
});
</script>
und die beleidigende Anrufe zu "$" sind hier. Ich denke, das bedeutet, dass JQuery nicht geladen wird? Wenn ich sie schnippeln, dann wird der nächste Fehler ist:
Failure/Error: JSON.parse self.figures_json
ActionView::Template::Error:
784: unexpected token at '{{toJson(figures.arr)}}'
Diese Lenker sind eine Schräg Sache. Wird Angular auch nicht geladen?
Hier ist meine Rails application.js:
//= require angular
//= require jquery
//= require bootstrap-sprockets
//= require jquery_ujs
//= require_tree .
//= require jquery-ui/autocomplete
//= require angucomplete-alt
Dies funktioniert in der realen Welt, nur nicht in diesem Test.
Gibt es etwas, was ich tun muss, um diese JS-Bibliotheken zu laden, bevor der HTML-Body ausgeführt wird?
Welche Version von Phantomjs laufen Sie, und wenn Sie sagen, dass es in der realen Welt funktioniert, meinen Sie in der Entwicklungsumgebung oder in der Produktion auch? –
Entwicklungsumgebung. Ich habe die Produktion nicht probiert. phantomjs (2.1.1.0) –