Mocking System.Drawing.Image avec Moq
-
05-07-2019 - |
Question
Comment puis-je me moquer d'une image avec Moq?
Il n'a pas de constructeur (est toujours généré à partir des méthodes d'usine).
En gros, je veux faire quelque chose comme ça ...
var image = new Mock<Image>();
image.Setup(i=>i.Save(someStream,ImageFormat.Jpeg);
var testableObject = new ObjectUnderTest(image.Object);
testableObject.MethodBeingTested();
image.VerifyAll();
La solution
Vous avez répondu à une question similaire hier, vous souhaiterez peut-être jeter un coup d'œil à ce fil sur se moquer d'un Singleton statique .
S'il est absolument nécessaire de simuler ce comportement, la méthode proscrite consiste à générer une interface exposant les méthodes dont vous avez besoin, à l'implémenter avec une classe concrète [encapsulant effectivement la classe Image] pour prod et à simuler l'interface à tester.
Cela semble exagéré, mais si vous devez simuler \ vérifier les interactions entre votre classe testable et Image, c’est le moyen de le faire. Sinon, vous pouvez simplement transmettre à votre classe testable une instance réelle de Image, puis comparer cette instance à une sortie attendue [méthodologie de test unitaire standard]