2013-08-31 14 views
1

我的蕪菁測試正常工作,但在使用spork時不起作用。
我用pry進行調試,發現缺少User(類常量)會導致錯誤。「錯誤的常量名」使用蕪菁與Spork時出錯

我應該怎麼做才能解決?

# working (good) 
bundle exec rspec spec/acceptance/features/* 

# not work (bad) 
bundle exec rspec spec/acceptance/features/* --drb 

這是我運行​​選項時出現的錯誤。

Failure/Error: Give a user logged in: 
NameError: 
wrong constant name #<Module:0x007fd40a19c680> 
# spec/acceptance/steps/user_steps.rb:8:in `block (2 levels) in <module:UserSteps>' 
# spec/acceptance/steps/user_steps.rb:7:in `each' 

這是我的spec_helper.rb。

require 'rubygems' 
require 'spork' 
#uncomment the following line to use spork with the debugger 
#require 'spork/ext/ruby-debug' 

Spork.prefork do 
    ENV["RAILS_ENV"] ||= 'test' 
    require File.expand_path("../../config/environment", __FILE__) 
    require 'rspec/rails' 
    require 'rspec/autorun' 
    require 'capybara/dsl' 
    require 'capybara/rspec' 
    require 'capybara/rails' 
    require 'turnip' 
    require 'turnip/capybara' 
    require 'shoulda/matchers/integrations/rspec' 

    # Requires supporting ruby files with custom matchers and macros, etc, 
    # in spec/support/ and its subdirectories. 
    Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 
    Dir.glob("spec/**/*steps.rb") { |f| load f, true } 

    WebMock.disable_net_connect!(:allow_localhost => true) 

    Capybara.run_server = true 
    Capybara.app_host = 'http://localhost' 
    Capybara.server_port = 8000 
    Capybara.default_selector = :css 
    Capybara.javascript_driver = :webkit 

    OmniAuth.config.test_mode = true 

    RSpec.configure do |config| 
    # ## Mock Framework 
    config.mock_with :rr 
    config.infer_base_class_for_anonymous_controllers = false 
    config.order = "random" 

    config.include FactoryGirl::Syntax::Methods 
    config.include Capybara::DSL, turnip: true 
    config.include Rails.application.routes.url_helpers 

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

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

    config.after(:each) do 
     DatabaseCleaner.clean 
    end 

    config.before(:each, js: true) do 
     headless = Headless.new 
     headless.start 
    end 
    end 
end 

Spork.each_run do 
    # This code will be run each time you run your specs. 

end 

這是user_steps.rb。

1. require_relative 'helper_steps' 
2. 
3. module UserSteps 
4. include HelperSteps 
5. 
6. step 'users are registered :' do |table| 
7.  table.hashes.each do |row_hash| 
8.  create(:user, class_params_by_row_hash(User, row_hash)) 
9. end 
10. end 
11. end 

軌3.2.13
RSpec的護欄2.11.0
rspec的2.11.0
蘿蔔1.1.0
叉勺1.0.0rc3

+0

你解決了這個問題嗎?我有同樣的問題 – Lichtamberg

+0

我還沒有解決它。 – utwang

回答

2

我不知道爲什麼發生此問題,但可以防止它發生。如果你在模塊中包裝步驟,則不需要將true換行參數傳遞給load。變化:

Dir.glob("spec/**/*steps.rb") { |f| load f, true }

到:

Dir.glob("spec/**/*steps.rb") { |f| load f }

這可以防止這種錯誤我。

參考:http://www.ruby-doc.org/core-2.1.2/Kernel.html#method-i-load

相關問題