Pro*_*ver 10 rspec ruby-on-rails capybara phantomjs ruby-on-rails-4
我刚刚开始玩Capycabra + poltergeist,执行我的Capy测试rspec ./spec/features/test_spec.rb
后出现以下错误:
Failure/Error: visit '/item/new'
ArgumentError: rack-test requires a rack application, but none was given
Run Code Online (Sandbox Code Playgroud)
此外,我有一些标准的rspec测试,每当我尝试执行所有测试时,rspec测试成功通过,但只有capy测试失败并出现奇怪的错误
ActionView::Template::Error: couldn't find file 'jquery.min' (in app/assets/javascripts/application.js:13)
Run Code Online (Sandbox Code Playgroud)
这让我感到困惑.
我在stackoverflow上查看了几个类似的线程,在某些情况下,错误是缺少config.include specyhel.rb中的Capybara :: DSL或测试的错误位置.我做了相应的更改,但它不起作用,错误仍然是相同的.
我的spec_helper.rb文件
require 'capybara'
require 'capybara/dsl'
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
RSpec.configure do |config|
config.include Capybara::DSL
end
Run Code Online (Sandbox Code Playgroud)
完整版spec_helper:http://pastebin.com/qkANfu39
测试文件:
#spec/features/test_spec.rb
require 'spec_helper'
describe 'accessibility of webpage' do
it 'should access web page' do
visit '/item/new'
expect(page).to have_content("Something")
end
end
Run Code Online (Sandbox Code Playgroud)
思考?
Pro*_*ver 13
根据报告(参见评论)不再需要此解决方法,但我还没有检查过.
找到解决方法..
我必须指定应用主机网址和默认驱动程序..
#spec/spec_helper.rb
require 'capybara'
require 'database_cleaner'
require 'capybara/dsl'
require 'capybara/poltergeist'
Capybara.configure do |c|
c.javascript_driver = :poltergeist
c.default_driver = :poltergeist
c.app_host = "http://localhost:3000"
end
Run Code Online (Sandbox Code Playgroud)
为了修复错误:
Failure/Error: visit '/item/new'
ArgumentError: rack-test requires a rack application, but none was given
Run Code Online (Sandbox Code Playgroud)
我将rails_helper文件包含在我的Capy测试中.测试的最终版本:
require 'rails_helper'
require 'spec_helper'
describe 'accessibility of webpage' do
it 'should access web page' do
visit '/item/new'
expect(page).to have_content I18n.t("form_input.item.item_s")
end
end
Run Code Online (Sandbox Code Playgroud)
之后由于某种原因指定了不再需要的app_host url,可以从spec_helper帮助文件中删除它 .最终版本:
Capybara.configure do |c|
c.javascript_driver = :poltergeist
c.default_driver = :poltergeist
end
Run Code Online (Sandbox Code Playgroud)
spec_helper.rb http://pastebin.com/DKgF1uQA的完整版本
ActionView::Template::Error: couldn't find file 'jquery.min' (in app/assets/javascripts/application.js:13)
Run Code Online (Sandbox Code Playgroud)
发生的原因是我的Gemfile中测试范围内没有gem'jquery-rails',它仅在:development&:production environment中可用.我将gem'jquery-rails'移到了全局范围.Gemfile的完整版本:http://pastebin.com/dt4KrHGG
| 归档时间: |
|
| 查看次数: |
6536 次 |
| 最近记录: |