2

私はcapybaraminitestレール2.3.14で使用しています。ほとんどのアプリケーションと同様に、このサイトもサイト内の何かを行うためにログインする必要があります。私は、テストスイートごとに一度ログインし、実行されているすべてのテストでそのセッションを使用したいと考えています。 minitest_helperへのリファクタリング方法を教えてください。今すぐ私のヘルパーはこのように見える:レールテストを実行するためにminitest/capybaraで1回ログインを設定する

#!/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

も質問を[?カピバラと、すべての私が前に使用することはできます]を参照してください。 stackoverflow.com/questions/9786899/can-i-use-before-all-with-capybara) – avandeursen

答えて

1

が統合テストで複数のセッションおよびカスタムDSLの例です

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 

出典:(のhttp://:http://guides.rubyonrails.org/testing.html#helpers-available-for-integration-tests

関連する問題