在尝试运行specs文件进行集成测试时,我看到:
undefined method `visit' for #<Class:0xab9a140> (NoMethodError)
我搜索了这个网站并找到了几个解决我问题的方法,这些是我已经尝试过的解决方案(没有成功):
将include Capybara::DSL
添加到我的spec文件中 - 这很有趣。当我添加此内容时,我会停止上述错误并开始另一条错误消息:
undefined method 'expect' for #<Class:0x9d2a088> (NoMethodError)
describe
替换为feature
。 (没有变化)尝试运行包含visit
方法的规范的结果:
felipe@felipe-VirtualBox:~/rails/project-manager$ bundle exec rspec spec/features/
No DRb server is running. Running in local process instead ...
/home/felipe/rails/project-manager/spec/features/projects_spec.rb:15:in `block (2 levels) in <top (required)>': undefined method `visit' for #<Class:0xab9a140> (NoMethodError)
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:246:in `module_eval'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:246:in `subclass'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:232:in `describe'
from /home/felipe/rails/project-manager/spec/features/projects_spec.rb:14:in `block in <top (required)>'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:246:in `module_eval'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:246:in `subclass'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:232:in `describe'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/dsl.rb:18:in `describe'
from /home/felipe/rails/project-manager/spec/features/projects_spec.rb:3:in `<top (required)>'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `load'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `block in load_spec_files'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `each'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `load_spec_files'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:22:in `run'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:77:in `rescue in run'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:73:in `run'
from /home/felipe/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:17:in `block in autorun'
我的Gemfile:
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.1'
group :development,:test do
gem 'rspec-rails'
gem 'pg','0.15.1'
gem 'watchr'
gem 'selenium-webdriver'
gem 'capybara'
gem 'spork-rails'
gem 'guard-spork'
gem 'childprocess'
end
gem 'sass-rails', '~> 4.0.1'
gem 'uglifier', '>= 2.1.0'
gem 'coffee-rails', '~> 4.0.1'
gem 'jquery-rails','3.0.4'
gem 'turbolinks','1.1.1'
gem 'jbuilder', '~> 1.2'
group :doc do
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', require: false
end
我的spec_helper.rb文件
require 'rubygems'
require 'spork'
Spork.prefork do
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
# Disable the old-style object.should syntax.
config.expect_with :rspec do |c|
c.syntax = :expect
end
end
end
Spork.each_run do
end
实际测试(是的,它位于spec/features
文件夹下)
require 'spec_helper'
describe "Projects" do
describe "Projects index" do
it "should show the string 'Projetos'" do
visit '/projects'
expect(page).to have_content('Projetos')
end
end
describe 'Add and delete a project' do
visit '/projects/new'
expect(page).to have_content('Novo')
end
end
我正在寻找关于可能是我的问题的建议和指示。
P.S。:我正在投放rails (4.0.1)
,capybara (2.2.0)
,rspec-core (2.14.7)
rspec-rails (2.14.0)
答案 0 :(得分:2)
我发现了问题....第二次拨打it ... do ... end
时,我错过了visit
阻止...对不起,感谢所有帮助过我的人。