繁体   English   中英

未定义的“访问”方法(使用rspec和capybara)

[英]Undefined method 'visit' (using rspec and capybara)

在尝试运行规格文件进行集成测试时,我看到:

undefined method `visit' for #<Class:0xab9a140> (NoMethodError)

我搜索了这个网站,找到了解决我问题的几种解决方案,这些是我已经尝试过解决方案 (没有成功):

  • 在规范/功能下添加文件,而不是规范/请求(它们一直在那里)
  • include Capybara::DSL添加到我的规格文件中-这很有趣。 添加此代码后,我将不再遇到上述错误,而开始出现另一条错误消息

    • 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

我正在寻找有关可能是我的问题的建议和指示。

PS:我正在运行rails (4.0.1)capybara (2.2.0)rspec-core (2.14.7) rspec-rails (2.14.0)

我发现这个问题....我错过了it ... do ... end围绕第二次调用块visit ......对不起,这并感谢大家谁帮助我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM