我正在使用Django REST框架來處理我正在使用的API。出於幾個原因,我想使用基於類的視圖。但是,我對單元測試有點特別,並且我從不允許單元測試觸及數據庫。注意:我總是使用Carl Meyer在Pycon 2012上演示的「技巧」,在那裏他嘲笑了Cursor包裝。Django基於類的視圖中的嘲諷函數
cursor_wrapper = Mock()
cursor_wrapper.side_effect = RuntimeError("No touching the database!")
@patch('django.db.backends.util.CursorWrapper', cursor_wrapper)
class TestMyCode(TestCase):
這裏是link如果你有興趣的幻燈片。
我在其中一個視圖中檢查數據庫中的東西的方法。要進行DRY,它將在POST和PUT之間共享。但是,我在單元測試中嘲笑它有問題。這是因爲classmethod as_view創建了一個新的實例和類派發,並返回了派發返回值的「處理函數」。所以,我似乎無法在我的基於類的視圖中獲取共享方法來嘲笑它。
我可以嘲笑基於類的視圖使用的模型,但是我必須打破「幹」的目標,並在POST和PUT中複製代碼。我想我可以重構代碼並將邏輯移到模型上。但是,我不積極,我想這樣做。
如何嘲笑基於類的視圖的共享方法以避免實際觸及數據庫?避免它們?