2015-04-08 129 views
0

當我嘗試編寫完整的步行測試時,我遇到了一個有趣的問題。Rspec:我如何在一次測試中擁有多個控制器?如何在測試中更改控制器?

首先,我想承認測試應該是離散的和具體的東西。我知道這個事實..但是:)

但是就像玩耍和學習線一樣,我認爲在打開門之前有一個完整的步行測試是個好主意。爲此,我想寫一個大規模的集成測試,打到一堆控制器。它會超級慢,所以我已經將它隔離,只有在被要求時才運行。但現在我卡住了

我似乎無法弄清楚如何「擊中」控制器。

我試着將我的測試類型設置爲「集成」並規定。我遵循了這個問題回答中列出的步驟post to a different controller in an rspec test 而且我在控制器中投入1/0,並且它從來沒有命中。

回答

0

好的..我想通了,謝謝其他答案..我只是寫出來更簡單,我自己的筆記...和未來的獵人。

describe 'Payments Integration', :type => :request do 
    let(:attributes) { p 'blabla' } 
    it 'should create user and billing details' do 
     expect{ 
     post '/api/account', account: attributes 
     }.to change(User,:count).by(1) 
     user = User.find(json['account']['id']) 
     auth = user.authentication_token 

     expect{ 
     post '/api/billing_details', auth_token: auth, credit_card: valid_card 
     }.to change(BillingDetail,:count).by(1) 
    end 
end 

我有很多帖子和放置,但是這個代碼足以讓任何人開始。

+0

如果你把這個測試放在'spec/requests'中,你不需要在測試中手動指定'type'。 –

+0

是的..問題是,我有它在lib文件夾spec/lib/payments文件名是_full_integration_spec.rb我不認爲請求是不夠具體.. – baash05

+0

我也有測試標記,所以它只運行時我專門要求它,但這是另一個問題:) – baash05