【发布时间】:2014-01-02 19:13:00
【问题描述】:
nifty stackoverflow post 用于将变量传递给 Javascript。它与railscast episode 相呼应。该技术就像配置 jquery datepicker 的魅力一样,但会导致我所有的 javascript 集成测试失败。
这是application.html.erb中的代码
<script type="text/javascript">
<%-# commented line -%>
window.sDateFormatLocal = "<%= t 'date.formats.js_date' %>"
</script>
这是一个使用它的日期选择器初始化
$("input.datepicker").datepicker({
dateFormat: sDateFormatLocal,
onClose: function(value, ui) {
console.log("regular old datepicker");
}
}
它似乎工作得很好。唯一的问题是,我所有使用 'js: true' 的集成测试现在都失败了。这是我得到的错误。
Capybara::Poltergeist::JavascriptError: 页面上的 Javascript 代码中出现一个或多个错误:
ReferenceError: Can't find variable: sDateFormatLocal
当我在浏览器(Chrome、Firefox)中运行时,控制台中没有错误或警告。
为了完整起见,典型的规范如下所示:
describe "The root" do
it "should load the page and have js working.", :js => true do
visit root_path
page.should have_content "Hello world"
end
end
我是否缺少允许在 poltergeist 中使用此类变量的设置?
【问题讨论】:
-
您的
$("input.datepicker").datepicker(...)函数是否在文档就绪块中? -
好问题。不,在这种情况下不是。它在函数内部。
标签: ruby-on-rails capybara phantomjs poltergeist