使用Moq模拟System.Drawing.Image

时间:2009-10-22 14:09:52

标签: c# unit-testing mocking moq

我如何使用Moq嘲笑图像?

它没有构造函数(总是从工厂方法生成)。

基本上我想做这样的事......

var image = new Mock<Image>();
image.Setup(i=>i.Save(someStream,ImageFormat.Jpeg);
var testableObject = new ObjectUnderTest(image.Object);

testableObject.MethodBeingTested();

image.VerifyAll();

1 个答案:

答案 0 :(得分:5)

昨天回答了类似的问题,您可以查看this thread on mocking a static Singleton

如果绝对有必要模仿这种行为,那么被禁止的方法是生成一个暴露所需方法的接口,用一个具体的类[有效地包装Image类]为prod实现它,并模拟接口进行测试。 / p>

听起来有点矫枉过正,但是如果你需要Mock \验证你的可测试类和Image之间的交互,那就是这样做的方法。或者,您可以将可测试类传递给Image的实际实例,然后将此实例与预期输出[标准单元测试方法]进行比较