我正在我的應用程序中構建一個活動流功能,所有活動都是通過控制器方法創建的。活動流測試
當控制器方法成功時,活動記錄到活動表。由於我的控制器操作是通過ajax調用的,我嘗試直接從我的rspec測試中發佈。
我嘗試這樣做:
Net::HTTP.post_form(URI.parse("http://localhost:5000#{inquiry_path}"), { :id=> @user.id, :type => 'Inquiry' })
這是我所看到的被張貼在我的螢火,使Ajax調用時:
id:55
type:Inquiry
url:/user_inquiry
所以我斷言活動計數是否發生了變化:
it "activity count should be changed" do
PublicActivity::Activity.count.should == 1
end
當我完成測試計數已經改變後,我想看到用戶主頁實際上顯示鋪設新的通知。
但此測試失敗:
Failure/Error: PublicActivity::Activity.count.should == 1
expected: 1
got: 0 (using ==)
以防萬一我把放聲明在我的控制器,以檢查是否調用實際到達控制器:
puts "Hereeee"
我沒有看到消息得到打印,所以我猜想請求永遠不會到達控制器,爲什麼?
我在這裏做錯了什麼,我該如何測試?
首先你應該做一個控制器或功能規範(取決於你測試的是什麼),並使用rspec方法來處理請求,例如'get','post'以處理所有的服務器運行時。除此之外,常見的問題原因可能是您未登錄,並且您未授權用戶訪問該操作。您應該先登錄,然後在請求中添加用戶會話。 – Nikos
我已經登錄了,但那不是問題,我有控制器/功能規格分開。謝謝 –