6
我有以下情形:嘲諷Django的模型和save()
在我的models.py
class FooBar(models.Model):
description = models.CharField(max_length=20)
我utils.py文件
。
from models import FooBar
def save_foobar(value):
'''acts like a helper method that does a bunch of stuff, but creates a
FooBar object and saves it'''
f = FooBar(description=value)
f.save()
在tests.py
from utils import save_foobar
@patch('utils.FooBar')
def test_save_foobar(self, mock_foobar_class):
save_mock = Mock(return_value=None)
mock_foobar_class.save = save_mock
save_foobar('some value')
#make sure class was created
self.assertEqual(mock_foobar_class.call_count, 1) #this passes!!!
#now make sure save was called once
self.assertEqual(save_mock.call_count, 1) #this fails with 0 != 1 !!!
這是我想要做一個簡化版本......所以請不要hungup爲什麼我有一個utils的文件和
這個輔助函數(在現實生活中它有幾件事情)。另外,請注意,雖然簡化,但這是我的問題的實際工作示例。第一次測試call_count的調用返回1並通過。然而,第二個返回0.所以,這看起來像我的補丁正在工作,並得到調用。
我該如何測試不僅FooBar的實例被創建,而且它的保存方法被調用?
你打我答案! – fuzzyman
Upvote響應我的查詢!非常感謝你! –
@matthew!非常感謝你! –