还有未定义的方法`访问'在轨道中使用RSpec和Capybara时

时间:2014-10-09 14:12:53

标签: ruby-on-rails-4 rspec capybara

这似乎是一个常见问题,但我查看了undefined method `visit' when using RSpec and Capybara in railsRails Rspec error - undefined method `visit',这两种解决方案都不适合我。

Capybara正在为我所拥有的Cucumber测试工作做得很好。

我的RSpec测试在/ spec / features中开始:

require 'rails_helper'

describe 'session_project', type: :controller do
  before(:each) do
    @user = User.create(
        username: 'user',
        password: 'test',
        password_confirmation: 'test',
        email: 'user@example.com',
        role: 3
    )
    @project = Project.create(name: 'Project 1', active: true, user_id: @user.id)
  end
  context 'when I am on the view Project 1 page' do
    before do
      visit '/projects'
      find(:xpath, %{//tr[td='Project 1']/td[@class='list_actions']/a[text()='View']}).click
    end
    # ... and so on.

visit '/projects'行给出了错误Undefined method 'visit

如果我在我的RSpec配置中包含config.include Capybara::DSL,它会抱怨Capybara是一个未定义的常量,那么RSpec可能会找错它的地方吗?

关于如何让RSpec与Capybara合作的任何想法?

1 个答案:

答案 0 :(得分:0)

您的测试是一项功能测试(它描述了用户如何在浏览器中与应用互动),但却标有type: :controller。将其更改为type: :feature

功能规格默认包括Capybara。

https://www.relishapp.com/rspec/rspec-rails/v/3-1/docs/feature-specs/feature-spec