2

我最近将一个非常简单的rails应用程序从rspec切换到minitest。我也使用水豚和factory_girl。Minitest集成测试:会话不会被拆除?

我有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”的测试文件中使用上述代码测试登录,并且当它开始运行另一个测试文件(例如“sessions_integration_test.rb”)时,用户已经登录,然后才能使用上面的代码。

我的问题是:这是rspec和minitest之间的故意区别,我只需在每次测试后注销用户?还是我犯了一个错误设置最小?

我正在使用与Minitest Railscast中相同的minitest_helper文件。

+0

真的,你试过登出吗?我认为它会起作用 – beornborn 2012-03-19 09:42:09

+0

是的,我确实尝试过一次(:每次)注销。在这一点上它工作得很好,但我的问题是,我不知道是否我错误地设置了Minitest,因为虽然拆除会话会自动进行测试框架。在我的测试中必须手动拆除所有东西将是一件痛苦的事情! – hangsu 2012-03-19 16:31:20

回答

0

我得到它与此正确拆除。希望能帮助到你! Maeshima先生的回答可能也很有用。我没有尝试。

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 
3

我不知道区别,但下面的代码可能工作。

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