2017-06-22 54 views
0

我有以下代碼:爲什麼不在控制器規範中的請求之間清除'params'?

let(:params) do 
    { 
    customer: { 
     email: '[email protected]', 
     confirmation_number: "12345" 
    } 
    } 
end 

it 'does something' do 
    post :create, params: params 
    get :show, params: { cache_key: 1 } 
    expect(something).to be_truthy 
end 

show行動接收:params:customer關鍵,但這種規範運行時,params有什麼在post請求發送加上在get請求被髮送的內容。

爲什麼會發生這種情況,我怎樣才能讓Rspec模仿請求之間的真實行爲(關於params裏面的內容)?

+1

我覺得'params'有時候是一個保留關鍵字 - 您是否嘗試過使用不同的變量名? – Mark

+0

我有,行爲是一樣的。 –

+0

也許嘗試明確地將其設置爲無效,您的帖子和您的獲取請求之間? – Mark

回答

0

控制器規格 - 控制器規格是用於Rails功能測試的RSpec包裝。它可以模擬在每個例子一個http請求,並指定預期成果

請求規格 - 要求規格提供了簡單包裝的Rails的集成測試,並且被設計成通過完整的堆棧駕駛行爲,包括路由(由Rails提供)並且不存在瑕疵(這取決於你)。

所以,如果你想測試API控制器,我會建議在測試單個請求時使用控制器規格。

+0

小心解釋downvote ... –

+0

TL; DR:此規格僅適用於一項請求。 –

相關問題