Quel serait un bon motif de conception si je devais tester une classe A de C++ qui s'interface avec la classe B où les appels de B initieraient des rappels à A plus tard?
J'ai besoin d'un contrôle complet sur ces rappels - quand ils sont exécutés et avec quelles informations. J'utilise Google Test et Google Mock comme cadres de test. Dans l'intro de Google Mock, ils expliquent le difference between a fake and a mock. Il semble que j'aie besoin d'une fausse classe B et non d'un faux.
Dans leurs documents ils détaillent la façon d'avoir non-trivial implementations of B's functions, mais cela ne résout pas mon exigence de contrôle des callbacks de B à A.C++ Fake class avec callbacks
MISES À JOUR:
- Juste pour clarifier: A a les callbacks. Quelque temps après que A appelle les fonctions de B, B initie les fonctions de rappel dans A. Bien que cela n'ait pas d'importance, dans mon cas B détient un pointeur sur A et appelle une fonction d'interface prédéfinie (dérivée d'une classe virtuelle pure A_abstract).
Vous êtes la première moitié semble être la solution, j'ai encore besoin de le tester. Pour une raison quelconque, j'étais bloqué sur l'idée que B doit déclencher A. Au moins dans mon cas, cela n'a pas vraiment d'importance si B ou le script de test appelle les callbacks de A. – Jonathan
C'est comme ça que ça devrait toujours être. Et rappelez-vous simplement que les simulacres ne doivent pas resénuer le code réel, tant que le code sous test ne peut pas remarquer ou ne se soucie pas de la différence. –