Pour les procédures, le «faire quelque chose» implique généralement des appels d'API ou d'autres manipulations d'objets.
Par exemple, une procédure peut écrire une ligne dans un fichier. Il utilise les appels API File I/O (ou un objet File IO) pour le faire "write a row".
Ce que vous voulez faire est de créer un objet "faux" pour représenter le fichier. L'objet Mock a juste assez de fonctionnalités pour collecter les résultats du test et les rendre visibles à une assertion. Ne pas écraser vos objets simulés, c'est un rat-trou du temps perdu.
En Python, nous faisons des choses comme ça.
class MockFile(object):
def __init__(self, aFileName, aMode):
self.name= aFileName
self.mode= aMode
self.buffer= None
def write(self, aRow):
self.buffer= str(aRow)
Maintenant, nous pouvons fournir ce faux fichier à notre procédure au lieu d'un vrai fichier. Ans nous pouvons faire des assertions sur ce qui s'est passé.
class TestSomeProcedure(unittest.TestCase):
def testWrite(self):
mockFile= MockFile("name", "w")
theProcedureImTesting(args, args, args, mockFile)
self.assertEquals("The Row It Was Supposed to Write\n", mockFile.buffer)