測試控制器的實例變量我有一個末日應用程序,如果用戶登錄,供應頁面爲只讀或可編輯根據。與機架::測試和西納特拉
控制器設置一個變量@can_edit
,即由視圖使用來隱藏/顯示編輯鏈接。如何在我的測試中測試@can_edit
的值?我不知道如何獲取Rack :: Test下的控制器當前實例。
我用class_eval
存根在控制器中logged_in?
方法,但我不得不求助於檢查last_response.body
我的編輯鏈接以查看是否@can_edit
已設置與否。
如何直接測試@can_edit
的值?
「最好測試結果,而不是實現細節」我以前見過類似的聲明,我不同意。如果你想要2,1 + 1工作的很好,但1 + 2 + 10 - 11也是如此。這兩者都不意味着你的應用程序「實際工作正常」。 – nowk 2009-12-18 17:14:07
但是,我並不完全不同意你的看法:假設有一種方法執行不正確。如果方法在100%的時間內返回正確的答案(你不能想到失敗的情況),那麼實現是否真的「不正確?」有關係嗎? 如果您發現自己正在測試方法中的變量值,則可能沒有足夠的測試用例(輸入)。如果您重命名變量或以其他方式更改應用程序的實現而不更改其行爲,則應該通過測試而不做任何修改。這是首先使用測試的重要原因。 – 2009-12-18 17:52:36
我認爲測試@can_edit正在測試控制器的輸出。我不喜歡通過檢查視圖來設置@can_edit時發生的情況來間接測試它。這應該是一個不同的測試,完全是爲了這個觀點。 – Brian 2009-12-21 14:25:30