2013-01-17 72 views
2

我不能得到水豚工作。我使用的水豚2.0.0水豚的方法是undefined

我得到这个错误

Failure/Error: visit "https://stackoverflow.com/users/sign_in" 
    NoMethodError: 
     undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_21:0x007fdda4c6eba0> 

在该规范

规格/请求/ forgot_password_spec.rb

describe "forgot password" do 
    it "redirects user to users firms subdomain" do 
    visit "https://stackoverflow.com/users/sign_in" 
    end 
end 

我没有得到任何的错误,它找不到水豚,它包含在spec_helper.rb中

spec_helper.rb

require 'rubygems' 
require 'spork' 
require 'database_cleaner' 
Spork.prefork do 
ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'capybara/rspec' 
require 'rspec/autorun' 
require 'factory_girl' 


Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 
    config.include Devise::TestHelpers, :type => :controller 
    config.extend ControllerMacros, :type => :controller 
    config.include RequestMacros, :type => :request 
    config.mock_with :rspec 

    config.use_transactional_fixtures = false 

    config.before(:suite) do 
    DatabaseCleaner.strategy = :truncation 
    end 

    config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 
    config.infer_base_class_for_anonymous_controllers = false 
end 
Spork.each_run do 
    FactoryGirl.reload 
end 
end 

有没有其他人遇到过这个?

+0

失败的规格位于哪里(控制器,请求,功能)以及您使用哪种版本的水豚? – dimuch

+0

谢谢更新的问题。 –

回答

6

如果你有版本>= 2.0,使用像visit水豚方法下规范应该去任何测试/功能目录,而不是根据规格/请求,在那里他们会通常存在于水豚1.1.2

看一看有关更多信息,以下链接:

如果你不想使用规格/功能目录,你应该能够以下列方式将测试标记为feature并且具有水豚方法工作:

describe "Some action", type: :feature do 
    before do 
    visit "https://stackoverflow.com/users/sign_in" 
    # ... 
    end 
    # ... 
end 
+0

谢谢你解决了!我根据规范/要求提供了它 –

3

在我的情况下,我得到了这个错误,因为我忘了把require "spec_helper" 放在我的新spec文件的顶部。

我已经做到了足够的时间是我加入,希望回答的已经回答的问题,因为它有助于其他一些博傻(或最有可能我在将来再次搜索此)。