我在ASP.NET MVC Framework中创建了一个简单的网站,其中包含用户,文章等,以及用户配置文件中的图像。有一个简单的静态类用于图像处理(调整大小,裁剪和保存硬盘上的图像),放在“助手”目录中。我想知道如何处理代码以保留MVC原则并使整个网站更加单元测试友好。
素不相识
答案 0 :(得分:2)
使辅助类非静态,将其声明为控制器构造函数的参数,并将其注入使用依赖注入的控制器工厂。
答案 1 :(得分:2)
为了使您的控制器不依赖于您的图像处理帮助器,您需要让它与接口进行通信,而不是具体的类。所以创建一个像IImageManipulator这样的界面,让你的控制器调用方法在那个接口而不是你的类上。您的图像操纵器类将需要实现此接口。您需要使用依赖注入技术来将具体实现注入到控制器中(有几种可接受的方法可以执行此操作)。
现在您的控制器将依赖于接口而不是具体实现,允许您通过模拟IImageManipulator接口并将该模拟注入控制器来对控制器进行单元测试。