首页 > 解决方案 > Rails + Rspec:由于 Vue.js 页面中的 Javascript 'unsafe-eval' 导致测试失败

问题描述

我正在尝试使用 RSpec、Capybara 和 Chromedriver 运行一个简单的测试,该测试只需填写表格并提交。但是,页面上的 Javascript 无法正确编译,因此表单无法完全呈现。

经过大量故障排除后,我将问题缩小到一些确定菜单是打开还是关闭的 Vue.js 代码:

new Vue({
  el: '#dashboard-topbar',
  data: {
    showDropdown: false
  }
})

菜单基本上只是检查showDropdown是真还是假以便切换:

transition name="fade"
  #dropdown_box(v-show="showDropdown" v-cloak)
    ul
      li Some item 1
      li Some item 2

= link_to fa_icon('chevron-down'), '#', '@blur': 'showDropdown=false', '@click': 'showDropdown=true'

我在运行此测试时检查了 Chrome 并收到以下错误:

Chrome 无法在页面上呈现 JS,因为不允许使用“unsafe-eval”

换句话说,Chrome 似乎不喜欢那样v-show="showDropdown"

我的config/initializers/content_security_policy.rb文件如下:

Rails.application.config.content_security_policy do |policy|
  if Rails.env.development?
    policy.script_src :self, :https, :unsafe_eval
  else
    policy.script_src :self, :https
  end
end

有谁知道我该如何解决这个问题?

软件包版本:

rails 6.0.2.1
capybara 3.30.0
capybara-selenium 0.0.6
webdrivers 4.2.0
selenium-webdriver 3.142.7

提前致谢!

标签: javascriptruby-on-railsseleniumvue.jscapybara

解决方案


推荐阅读