Как можно смоделировать свойство объекта тестируемого класса с помощью декоратора @patch
?
Учитывая следующий тест:
def test_hangup(self):
stub_call = Mock()
cut = TelefonyInterface()
cut.call = stub_call
cut.hangup()
self.assertEqual(1, stub_call.hangup.call_count)
self.assertEqual(None, cut.call)
Я хотел бы использовать mock.patch
Декоратор здесь, чтобы его было легче читать.Примерно так:
@patch.object(TelefonyInterface, 'call')
def test_hangup(self, call):
cut = TelefonyInterface()
cut.hangup()
self.assertEqual(1, call.hangup.call_count)
self.assertEqual(None, cut.call)
Но я получаю следующее AttributeError:
AttributeError: <class '(...).TelefonyInterface'> does not have the attribute 'call'
Мой TelefonyInterface выглядит примерно так:
class TelefonyInterface:
def __init__(self):
self.call = None
def dial(self, number):
self.call = ...
def hangup(self):
if self.call:
self.call.hangup()
...
Как правильносделать это?