2012-12-20 53 views
2

我使用MINITEST和轨和水豚和下面的测试给了我这个错误...为什么我的红宝石测试没有找到访问?

undefined method `visit' for #<Page:0x007f8bf3697630> 
    STDERR: 
    Exception `NoMethodError' at /Users/trace/.rvm/gems/[email protected]/gems/activemodel-3.1.8/lib/active_model/attribute_methods.rb:385:in `method_missing' 
    /Users/trace/.rvm/gems/[email protected]/gems/activerecord-3.1.8/lib/active_record/attribute_methods.rb:60:in `method_missing' 
    /Users/trace/.rvm/gems/[email protected]/gems/capybara-2.0.1/lib/capybara/dsl.rb:51:in `block (2 levels) in <module:DSL>' 
    test/support/utilities.rb:2:in `sign_in_user' 
    test/integration/pages_intergration_test.rb:12:in `block (4 levels) in <top (required)>' 
    /Users/trace/.rvm/gems/[email protected]/gems/mocha-0.9.12/lib/mocha/integration/mini_test/version_201_to_202.rb:27:in `run' 

这是我在文件test/integration/pages_intergration_test.rb

require "minitest_helper" 

describe "Pages integration" do 
    let(:page) { FactoryGirl.create(:page } 

    describe "Page Management tool" do 

    describe "Visiting a page" do 
     let(:user) { FactoryGirl.create(:user)} 
     it "Should see the welcome message" do 
     sign_in_user(admin_user) 
     should have_content("Welcome") 
     end 
    end 
    end 
end 

和我的文件test/support/utilities.rb

def sign_in_user(user) 
    visit root_path 
    fill_in "EMAIL ADDRESS", with: user.email 
    fill_in "PASSWORD",   with: user.password 
    click_button "SIGN IN" 
end 

这里是我的minitest.rb ...以防万一我可能做错了这里

ENV["RAILS_ENV"] = "test" 
require File.expand_path('../../config/environment', __FILE__) 

require "minitest/autorun" 
require "minitest/rails" 
require "minitest/rails/capybara" 
require "active_support/testing/setup_and_teardown" 
require 'turn' 

require 'factory_girl' 

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

Dir.glob(File.dirname(__FILE__) + "/factories/*").each do |factory| 
    require factory 
end 

require 'database_cleaner' 
DatabaseCleaner.strategy = :truncation 

class MiniTest::Rails::ActiveSupport::TestCase 
    before :each do 
    DatabaseCleaner.start 
    end 

    after :each do 
    DatabaseCleaner.clean 
    end 
end 

class IntegrationTest < MiniTest::Spec 
    include Rails.application.routes.url_helpers 
    include Capybara::DSL 

    register_spec_type(/integration$/, self) 

    before :each do 
    DatabaseCleaner.start 
    end 

    after :each do 
    DatabaseCleaner.clean 
    Capybara.reset_sessions! 
    Capybara.use_default_driver 
    end 
end 

class HelperTest < MiniTest::Spec 
    include ActiveSupport::Testing::SetupAndTeardown 
    include ActionView::TestCase::Behavior 
    register_spec_type(/Helper$/, self) 

    before :each do 
    DatabaseCleaner.start 
    end 

    after :each do 
    DatabaseCleaner.clean 
    end 
end 

上有什么问题的任何想法...

回答

2

最新版本豚(2.0支)已经被考虑到了需要改变。下面是来自changelog相关部分(有关通道加粗):

值得注意的是,我们改变了:类型水豚假设您的规格中的RSpec下运行 到:功能(以前是:请求)。最新的 规格/功能版本。或者,您可以使用功能DSL(功能代替描述)的水豚 ,这应该没有 任何额外的调整工作。 如果您看到像未定义方法 访问的错误,那么您可能遇到此问题。如果你是 包括模块到:请求规格,你可能需要 改变:功能。

因此,有可能将describe更改为feature可以更正此问题。

+1

FWIW,minitest-rails-capybara不支持DSL功能。它会但不会在今天。 – blowmage

+0

很确定它在这一点上支持它,正确@blowmage? – swrobel