2011-05-08 16 views
20

RSpec vardır:Nasıl "yuva" veya "grup" yaparsınız? Test :: Birim testleri?

describe "the user" do 
    before(:each) do 
    @user = Factory :user 
    end 

    it "should have access" do 
    @user.should ... 
    end 
end 

Nasıl olur Testi :: Birimi ile böyle grup testleri? Örneğin, denetleyici sınamasında, bir kullanıcı oturum açtığında ve hiç kimsenin oturum açmaması durumunda denetleyiciyi test etmek istiyorum.

cevap

6

Test::Unit, bilgim, test bağlamlarını desteklemiyor. Ancak, the gem contest içerik blokları için destek ekler.

+9

Birisi 15 dakikalık bir hata ayıklama kaydetme girişimi olarak, yarışma gem güncel değil ve benim Rails 4 uygulama ile çalışmaz. – AndrewJM

+2

Gem, Raylar 5.2 üzerinde çalışmıyor, bkz. Https://github.com/citrusbyte/contest/issues/9 – Dorian

10

Sınıflara yoluyla benzer bir şey elde edebilirsiniz.

class MySuperTest < ActiveSupport::TestCase 
    test "something general" do 
    assert true 
    end 

    class MyMethodTests < ActiveSupport::TestCase 

    setup do 
     @variable = something 
    end 

    test "my method" do 
     assert object.my_method 
    end 
    end 
end 
1

shoulda-context Kullanılması: Muhtemelen birisi bu korkunç diyecekler ama tek bir dosya içinde testler ayırmak için izin vermez

sizin Gemfile In:

gem 'shoulda-context' 

Ve test dosyalarında sen gibi şeyler yapabilir (test yerine should bildir:

class UsersControllerTest < ActionDispatch::IntegrationTest 
    context 'Logged out user' do 
    should "get current user" do 
     get api_current_user_url 

     assert_response :success 
     assert_equal response.body, "{}" 
    end 
    end 
end 
İlgili konular