J'ai une classe que je me suis mise à l'essai qui a une dépendance à une autre classe (un exemple de ce qui est transmis à la COUPE de la méthode init). Je veux, à se moquer de cette classe à l'aide de Python se Moquer de la bibliothèque.
Ce que j'ai, c'est quelque chose comme:
mockobj = Mock(spec=MyDependencyClass)
mockobj.methodfromdepclass.return_value = "the value I want the mock to return"
assertTrue(mockobj.methodfromdepclass(42), "the value I want the mock to return")
cutobj = ClassUnderTest(mockobj)
Ce qui est bien, mais "methodfromdepclass" est paramétrée méthode, et comme tel, je veux créer un seul objet fantaisie, où selon ce que les arguments sont passés à methodfromdepclass il renvoie des valeurs différentes.
La raison, je veux que ce comportement paramétré est que je veux créer plusieurs instances de ClassUnderTest qui contiennent des valeurs différentes (dont les valeurs sont produites par ce qui est retourné à partir de la mockobj).
Un peu ce que je pense (bien sûr, cela ne fonctionne pas):
mockobj = Mock(spec=MyDependencyClass)
mockobj.methodfromdepclass.ifcalledwith(42).return_value = "you called me with arg 42"
mockobj.methodfromdepclass.ifcalledwith(99).return_value = "you called me with arg 99"
assertTrue(mockobj.methodfromdepclass(42), "you called me with arg 42")
assertTrue(mockobj.methodfromdepclass(99), "you called me with arg 99")
cutinst1 = ClassUnderTest(mockobj, 42)
cutinst2 = ClassUnderTest(mockobj, 99)
# now cutinst1 & cutinst2 contain different values
Comment puis-je réaliser cette "ifcalledwith" genre " de la sémantique?