设置一次登录minitest /水豚为跑轨测试

设置一次登录minitest /水豚为跑轨测试

问题描述:

我使用capybaraminitestRails 2.3.14。像大多数应用程序一样,这个也需要登录才能在网站内执行任何操作。我希望能够在每个测试套件上登录一次,并在运行的所有测试中使用该会话。我如何重构到minitest_helper?现在我的帮手看起来像这样:设置一次登录minitest /水豚为跑轨测试

#!/usr/bin/env ruby 

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

gem 'minitest' 
gem 'capybara_minitest_spec' 

require 'minitest/unit' 
require 'minitest/spec' 
require 'minitest/mock' 
require 'minitest/autorun' 
require 'capybara/rails' 
require 'factory_girl' 


FactoryGirl.find_definitions 

class MiniTest::Spec 

    include FactoryGirl::Syntax::Methods 
    include Capybara::DSL 
    include ActionController::URLWriter 

    before(:each) do 
    # .. misc global setup stuff, db cleanup, etc. 
    end 

    after(:each) do 
    # .. more misc stuff 
    end 

end 

谢谢。

+0

参见问题[我之前可以使用:所有水豚(HTTP:// *.com/questions/9786899/can-i-use-before-all-with-capybara) – avandeursen

下面是一个集成测试

require 'test_helper' 

class UserFlowsTest < ActionDispatch::IntegrationTest 
    fixtures :users 

    test "login and browse site" do 

    # User avs logs in 
    avs = login(:avs) 
    # User guest logs in 
    guest = login(:guest) 

    # Both are now available in different sessions 
    assert_equal 'Welcome avs!', avs.flash[:notice] 
    assert_equal 'Welcome guest!', guest.flash[:notice] 

    # User avs can browse site 
    avs.browses_site 
    # User guest can browse site as well 
    guest.browses_site 

    # Continue with other assertions 
    end 

    private 

    module CustomDsl 
    def browses_site 
     get "/products/all" 
     assert_response :success 
     assert assigns(:products) 
    end 
    end 

    def login(user) 
    open_session do |sess| 
     sess.extend(CustomDsl) 
     u = users(user) 
     sess.https! 
     sess.post "/login", :username => u.username, :password => u.password 
     assert_equal '/welcome', path 
     sess.https!(false) 
    end 
    end 
end 

源多个会话和自定义DSL的例子:http://guides.rubyonrails.org/testing.html#helpers-available-for-integration-tests