Тестирование интеграции Minitest: сессия не сносит? - PullRequest
2 голосов
/ 18 марта 2012

Недавно я переключил очень простое приложение rails с rspec на minitest.Я также использую capybara и factory_girl.

У меня есть 3 отдельных файла тестов интеграции, каждый из которых включает регистрацию пользователя, используя что-то вроде:

before(:each) do
  user = Factory(:user)
  visit login_path
  fill_in "Email", :with => user.email
  fill_in "Password", :with => user.password
  click_button "Log in"
end

После того, как я переключился на minitestПохоже, что сеансы перестали сносить после каждого теста.Например, я бы протестировал вход в систему с помощью приведенного выше кода в тестовом файле с именем «users_integration_test.rb», и когда он запускает другой тестовый файл, скажем «session_integration_test.rb», пользователь уже вошел в систему, прежде чем я смогу войти снова, используяприведенный выше код.

Мой вопрос: это преднамеренное различие между rspec и minitest, и мне просто необходимо выйти из системы после каждого теста?Или я допустил ошибку при настройке minitest?

Я использую тот же файл minitest_helper, что и в Minitest Railscast.

Ответы [ 2 ]

3 голосов
/ 31 октября 2012

Я не знаю разницы, но приведенный ниже код может работать.

ENV["RAILS_ENV"] = "test"
require File.expand_path("../../config/environment", __FILE__)
require "minitest/autorun"
require "capybara/rails"
require "active_support/testing/setup_and_teardown"

class IntegrationTest < MiniTest::Spec
  include Rails.application.routes.url_helpers
  include Capybara::DSL
  after do
    reset_session!
  end
  register_spec_type(/integration$/, self)
end

class HelperTest < MiniTest::Spec
  include ActiveSupport::Testing::SetupAndTeardown
  include ActionView::TestCase::Behavior
  register_spec_type(/Helper$/, self)
end
0 голосов
/ 20 декабря 2012

Я получил это сносить правильно с этим. Надеюсь, поможет! Ответ мистера Маэшима тоже может сработать. Я не пробовал.

ENV["RAILS_ENV"] = "test"
require File.expand_path("../../config/environment", __FILE__)
require "minitest/autorun"
require "capybara/rails"
require "active_support/testing/setup_and_teardown"

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

DatabaseCleaner.strategy = :truncation

class IntegrationTest < MiniTest::Spec
  include Rails.application.routes.url_helpers
  include Capybara::DSL
  register_spec_type(/integration$/, self)
  Capybara.javascript_driver = :selenium

  after do
    DatabaseCleaner.clean       # Truncate the database
    Capybara.reset_sessions!    # Forget the (simulated) browser state
    Capybara.use_default_driver # Revert Capybara.current_driver to Capybara.default_driver
  end
end

class HelperTest < MiniTest::Spec
  include ActiveSupport::Testing::SetupAndTeardown
  include ActionView::TestCase::Behavior
  register_spec_type(/Helper$/, self)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...