在我的文件dances.html.erb
中,我的测试抱怨:
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
我认为有问题的HTML代码看起来像
<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>
和违规电话&#39; $&#39;在这里。 我认为这意味着JQuery没有加载? 如果我剪断它们,那么下一个错误是:
Failure/Error: JSON.parse self.figures_json
ActionView::Template::Error:
784: unexpected token at '{{toJson(figures.arr)}}'
那些把手是一个Angular的东西。 Angular也没有加载吗?
这是我的Rails application.js:
//= require angular
//= require jquery
//= require bootstrap-sprockets
//= require jquery_ujs
//= require_tree .
//= require jquery-ui/autocomplete
//= require angucomplete-alt
这在现实世界中运行良好,而不是在此测试中。
在执行body html之前,我需要做些什么才能加载这些JS库?
答案 0 :(得分:1)
由于您运行的是最新的PhantomJS,最可能的原因是您的某个JS文件中存在错误。开发和测试环境之间的一个很大区别是,在测试环境中,rails将所有JS文件连接在一起。这意味着一个文件中的错误可能会阻止JS的其余部分被处理。在开发模式下,它们都是分开的,因此一个错误不会阻止其他人被处理。检查浏览器控制台日志中的错误并确保它们已修复。