我正在尝试使用RSpec和Capybara和无头Chrome进行一些集成测试。
但是,页面上的Vue.js代码似乎没有编译,因此集成测试无法正常运行。
我正在使用以下宝石:
group :development,:test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug',platforms: [:mri,:mingw,:x64_mingw]
gem 'pry'
gem 'rspec-rails','~> 3.8'
gem 'factory_bot_rails'
gem 'faker',git: 'https://github.com/stympy/faker.git',branch: 'master'
gem 'database_cleaner'
gem 'selenium-webdriver'
end
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara','>= 2.15'
gem 'capybara-selenium'
gem 'webdrivers'
end
我的rails_helper.rb
包含以下行:
require 'rspec/rails'
require 'capybara/rails'
require 'capybara/rspec'
require 'selenium/webdriver'
# ...
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app,browser: :chrome)
end
Capybara.register_driver :headless_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w[headless disable-gpu] }
)
Capybara::Selenium::Driver.new app,browser: :chrome,desired_capabilities: capabilities
end
# Capybara.default_driver = :headless_chrome
# Capybara.javascript_driver = :headless_chrome
Capybara.default_driver = :chrome
Capybara.javascript_driver = :chrome
webpacker信息的输出:
bundle exec rails webpacker:info
Ruby: ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
Rails: 6.0.1
Webpacker: 4.0.7
Node: v8.9.2
Yarn: 1.19.1
@rails/webpacker:
myapp@ /Users/me/Documents/apps/myapp
└── @rails/webpacker@4.0.7
Is bin/webpack present?: true
Is bin/webpack-dev-server present?: true
Is bin/yarn present?: true
但是当我运行集成时,不是像预期那样执行Vue.js代码,而是看到它作为文本输出到页面,例如:
我也尝试过跑步
RAILS_ENV=test rails assets:precompile
在运行规范之前,但这似乎也不起作用。
这是规格文件:
RSpec.feature 'Users can create invocies' do
let(:user) { create(:user) }
let(:address) { create(:address,user: user) }
let(:client) { create(:client,user: user) }
let!(:client_address) { create(:address,user: user,client: client) }
before do
login_as user
visit new_invoice_path
end
context 'successfully' do
it 'displays a success message on creation' do
fill_in 'Invoice No.',with: rand(1..100)
select address.full_address,from: 'invoice_personal_address'
select client_address.full_address,from: 'invoice_client_address'
fill_in 'Service name',with: 'Amazing web development'
fill_in 'Service description',with: 'Web development for real pros.'
fill_in 'Quantity',with: rand(1..10)
fill_in 'Rate',with: rand(30.0..80.0)
fill_in 'Date issued',with: Date.today
fill_in 'Date due',with: 1.month.from_now
click_button 'Create Invoice'
expect(page).to have_content 'Invoice was successfully created.'
end
end
end
知道我做错了什么吗? 预先感谢