我在一个新项目中遇到这个奇怪的错误,我希望与Angular合作并通过伪数据进行ajax搜索。搜索工作正常,但是当我尝试使用环境PhantomJS,Capybara,Rspec,Webpack和角度创建测试时会发生错误。 版本:
phantomjs -v
这是我的测试规范/ features / product_search_spec.rb:
require 'rails_helper'
feature 'product search' do
let(:email) {"username@mail.dk"}
let(:password) {"passwordpassword"}
before do
create_test_user(email, password)
create_product("Christan", "Zebra", "Andersen")
create_product("Mathias", "Aude", "Zebra")
create_product("Zebaa", "Zulu", "Hest")
create_product("Aaaaaaaaa", "Zebra", "Aaaaaaa") # Første produkt, der bliver vis
end
scenario "Search by title" do
visit root_path
fill_in "Email", with: email
fill_in "Password", with: password
click_button "Log in"
click_link "Gå til produktsøgning"
sleep 1
puts page.body
within ".search-form" do
fill_in "keywords", with: "Zeb"
end
within "section.search-results" do
expect(page).to have_content("Zebra")
list_group_items = page.all("ol li.list-group-item")
expect(list_group_items.count).to eq(4)
expect(list_group_items[0]).to have_content("Zebaa") # Er det sorteret rigtigt?
end
end
end
def create_test_user email, password
User.create!(
email: email,
password: password,
password_confirmation: password
)
end
# For at jeg og senere udvikler tydeligt kan se hvilken test-data, som det er vi arbejder med.
def create_product title, subtitle, authors
title ||= Faker::Internet.username
subtitle ||= Faker::Internet.domain_name
authors ||= Faker::FamilyGuy.character
Product.create!(
title: title,
subtitle: subtitle,
authors: authors
)
end
当我运行rails spec SPEC=spec/features/product_search_spec.rb
我在终端收到错误:
product search Search by title
Failure/Error: click_link "Gå til produktsøgning"
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).
TypeError: undefined is not a constructor (evaluating 'Object.assign({}, merged, opt)')
TypeError: undefined is not a constructor (evaluating 'Object.assign({}, merged, opt)')
我已经阅读了很多主题,其中一些是关于phantomjs无法使用ES6但是新版本2.1.1应该没问题。
我希望有人能指出我正确的方向。
答案 0 :(得分:0)
PhantomJS的2.1.1版大致相当于7岁版的Safari。它不支持ES6,您需要将所有JS代码转换并填充为ES5兼容才能使用它。有一个PhantomJS 2.5测试版使它更接近现代浏览器支持,但是如果你想要/需要无头测试支持ES6支持,那么它已经被放弃了,只是建议使用无头镀铬。
答案 1 :(得分:0)
我尝试实现Selenium,但它需要我的Mac才能运行Xcode。
我有El Capitan,所以我通过Apples支持论坛安装了旧版本,但它没有用。 (它占用12.7 GB!) 我尝试用PhantomJS再次寻找答案,并找到answer here他们谈论巴别塔。
所以我补充道:
import "babel-polyfill";
到顶部op我的js文件测试成功了,现在我可以继续我的工作了!