2014-02-04 6 views
2

В настоящее время я работаю над своими первыми тестами, но я застрял в проблеме, которую я не могу исправить самостоятельно. Я искал решения в течение нескольких часов и обнаружил подобные ошибки, но я не нашел в моем решении никакого решения. Может быть, из-за разницы в версии, я не знаю.Rails minitest devize error

Проблема возникает, когда я пишу блок-тест с минимальными, а может быть, и интеграционными тестами. Я использую программу для управления пользователями.

Это есть ошибка, которая появляется в терминале, когда я rake test:

1) Error: 
test_deactivate_enrolment(EnrolmentTest): 
NoMethodError: undefined method `env' for nil:NilClass 
    /Users/myname/.rvm/gems/ruby-2.0.0-p353/gems/devise-3.0.3/lib/devise/test_helpers.rb:24:in `setup_controller_for_warden' 
    /Users/myname/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:429:in `_run__840473936918917337__setup__1779200460764756091__callbacks' 
    /Users/myname/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback' 
    /Users/myname/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_setup_callbacks' 
    /Users/myname/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks' 
    /Users/myname/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-3.2.13/lib/active_support/testing/setup_and_teardown.rb:35:in `run' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/minitest/unit.rb:919:in `block in _run_suite' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/minitest/unit.rb:912:in `map' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/minitest/unit.rb:912:in `_run_suite' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/test/unit.rb:657:in `block in _run_suites' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/test/unit.rb:655:in `each' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/test/unit.rb:655:in `_run_suites' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/minitest/unit.rb:867:in `_run_anything' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/minitest/unit.rb:1060:in `run_tests' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/minitest/unit.rb:1047:in `block in _run' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/minitest/unit.rb:1046:in `each' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/minitest/unit.rb:1046:in `_run' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/minitest/unit.rb:1035:in `run' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/test/unit.rb:21:in `run' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/test/unit.rb:774:in `run' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/test/unit.rb:366:in `block (2 levels) in autorun' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/test/unit.rb:27:in `run_once' 
    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/test/unit.rb:365:in `block in autorun' 

Это то, что мой spec_helper.rb выглядит следующим образом:

require 'listen' 

Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } 

# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration 
RSpec.configure do |config| 
    config.color_enabled = true 
    config.order = :random 
    config.filter_run :focus => true 
    config.treat_symbols_as_metadata_keys_with_true_values = true 
    config.run_all_when_everything_filtered = true 
    config.filter_run_excluding :broken => true 
    config.fail_fast = true 
end 

def test_latency 
    0.1 
end 

# Crash loud in tests! 
Thread.abort_on_exception = true 

И это мой test_helper.rb

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

# To add Capybara feature tests add `gem "minitest-rails-capybara"` 
# to the test group in the Gemfile and uncomment the following: 
#require "minitest/rails/capybara" 

# Uncomment for awesome colorful output 
#require "minitest/pride" 
require 'minitest/autorun' 

class ActiveSupport::TestCase 
    # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. 
    fixtures :all 
    include Devise::TestHelpers 

    # Add more helper methods to be used by all tests here... 
end 

Я пробовал добавить include Devise::TestHelpers поверх файлов, которые не работают, но это не исправить. Удаление строки в 'test_helper.rb` имело тот же результат. Может, у кого-то была эта ошибка?

Update

Это на тестовых файлов, ничего не слишком продвинутых ...

требуют '' test_helper

class EnrolmentTest < ActiveSupport::TestCase 
    test "deactivate enrolment" do 
    assert true 
    end 
end 
+0

Отправьте ваш тестовый код. – DiegoSalazar

+0

Я обновил вопрос одним из тестовых файлов, которые не работают во время тестирования. Другие выглядят точно так же – Linus

ответ

20

Включите помощников разработчика в свои контрольные тесты. Ваш файл test_helper.rb должен выглядеть так:

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

# To add Capybara feature tests add `gem "minitest-rails-capybara"` 
# to the test group in the Gemfile and uncomment the following: 
#require "minitest/rails/capybara" 

# Uncomment for awesome colorful output 
#require "minitest/pride" 
require 'minitest/autorun' 

class ActiveSupport::TestCase 
    # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. 
    fixtures :all 

    # Add more helper methods to be used by all tests here... 
end 

class ActionController::TestCase 
    include Devise::TestHelpers 
end 
+0

Awesome! Спасибо огромное! – Linus

1

Удалить include Devise::TestHelpers из вашего test_helper.rb. Включите его только в тесте, который ему нужен.

2

Альтернатива, вы можете использовать Warden для тестирования вместо помощников тестового устройства, here there is an example of use. Разработчик основан на Warden.

Смежные вопросы