1
我最近剛剛將Devise添加到了我的第一個Rails3應用程序中,而且我在控制器測試中遇到了一些問題。用嘲諷測試兩種不同的期望
我正在測試用戶控制器類,它與Devise使用的是同一個模型。因此,在我的規範的開始,我有這樣的:
before(:each) do
sign_in @user = Factory.create(:user)
end
現在我可以得到測試通過,而無需使用嘲諷或磕碰,像這樣:
describe "GET edit" do
it "assigns the requested user as @user" do
user = Factory(:user)
get :edit, :id => user.id
assigns(:user).should eql(user)
end
end
但對於教育目的,我想知道如何爲了讓它與嘲笑和殘片一起工作,通常它會是直截了當的,但似乎Devise在控制器操作之前調用User.find
,並使測試失敗。
describe "GET edit" do
it "assigns the requested user as @user" do
user = Factory(:user)
User.expects(:find).with(:first, :conditions => {:id => 37}).returns(user)
get :edit, :id => '37'
assigns(:user).should be(user)
end
end
還通過將twice
到預期這也將失敗,因爲在第一次調用發現是一個我設定的預期不同。
任何有識之士將不勝感激。
非常感謝,我得出了類似的結論。對於不同的調用有不同的'.with'有什麼解決辦法嗎?我想另一種解決方法是將Devise的地獄存根出來...... – stuartc 2010-07-30 08:37:13