2011-05-08 160 views
20

RSpec的有:你如何「嵌套」或「組」測試::單元測試?

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

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

你會如何組測試,如與測試::單位?例如,在我的控制器測試中,我想在用戶登錄時以及沒有人登錄時測試控制器。據我所知,

回答

6

不支持測試上下文。但是,the gem contest添加了對上下文塊的支持。

+9

在試圖挽救某人15分鐘的調試時,競賽寶石已過時,並且不適用於我的Rails 4應用程序。 – AndrewJM 2015-11-02 19:43:15

+2

Gem無法在Rails 5.2上運行,請參閱https://github.com/citrusbyte/contest/issues/9 – Dorian 2017-12-20 17:21:50

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' 

並在測試文件,你可以做類似的事情(請注意should而不是test

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