我有以下的Django模型如何模拟对相关模型的方法的调用?
class Charge(models.Model):
total = models.PositiveIntegerField()
def execute():
# make some external calls
return invoice_url
class Transaction(models.Model):
product = models.ForeignKey(Product)
charge = models.ForeignKey(Charge)
def do_charge():
self.charge = Charge.objects.create(total=self.product.price)
url = self.charge.execute()
return url
我试图嘲弄调用execute
测试do_charge
。 问题是该对象是在do_charge
内创建的。
类似的东西(这显然是不工作只是为了说明)
@mock.patch('Charge.execute')
def test_should_return_url(self, mock):
mock.side_effect = 'www.foo.testing/invoice'
t = Transaction.objects.create(product=p1)
invoice_url = t.do_charge()
self.assertIsEqual(invoice_url, 'www.foo.testing/invoice')
是否有可能来嘲笑Charge.execute
?
python 3.4,django 1.8。
执行不是一个静态方法,是吗? – Nick
不,这是一种实例方法。 – haki