我正在使用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中复制代码。我想我可以重构代码并将逻辑移到模型上。但是,我不积极,我想这样做。
如何嘲笑基于类的视图的共享方法以避免实际触及数据库?避免它们?