2011-05-08 6 views
20

RSpec에가 있습니다Test :: Unit 테스트를 "중첩"하거나 "그룹화"하는 방법은 무엇입니까?

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

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

어떻게 것 테스트 : 단위와 같은 사용자 그룹 테스트? 예를 들어 내 컨트롤러 테스트에서 사용자가 로그인 할 때 및 아무도 로그인하지 않은 상태에서 컨트롤러를 테스트하려고합니다.

답변

6

Test::Unit 내 지식으로는 테스트 컨텍스트를 지원하지 않습니다. 그러나 the gem contest은 컨텍스트 블록에 대한 지원을 추가합니다.

+9

누군가에게 15 분간의 디버깅을 저장하려고 할 때, 경연의 보석은 오래되어서 내 Rails 4 응용 프로그램에서 작동하지 않습니다. – AndrewJM

+2

Gem도 Rails 5.2에서 작동하지 않습니다. https://github.com/citrusbyte/contest/issues/9를 참조하십시오. – Dorian

10

당신은 클래스를 통해 비슷한 일을 달성 할 수있다.

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을 사용하여 : : 아마 누군가가이 끔찍한라고하지만 그것은 당신이 하나 개의 파일 내에서 테스트를 분리 할 수 ​​있습니까

당신의 Gemfile에 :

gem 'shoulda-context' 

그리고 테스트 파일을 사용하면 같이 할 수 있습니다 (test 대신 should 표시) :

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 
관련 문제