[英]Unit Test C# MOQ dependecy injection
我是单元测试的新手。 尝试为遗留代码集成单元测试。 要最小化该类的相同方法,我需要注入接口还是有其他选择。
如果将接口注入构造函数是唯一的方法,则如何为现有代码定义默认构造函数。 例:
private IController _iController;
public Controller(IController iController)
{
_iController= iController;
}
public ActionResult ActualMethod()
{
_iController.FillViewBag();
return View();
}
public void UnitTest()
{
var i = new Mock<IController>();
i.Setup(d => d.FillViewBag());
var controller = new Controller(i.Object);
controller.ActualMethod();
}
对于上面的代码,我能够执行单元测试。 但是,如果我浏览该方法(手动测试操作),则会失败,未设置对象引用。 因为对象是空的。 如何解决这个问题?
我也在很多地方使用FillViewBag,那些地方我现在不想基于接口更改呼叫。 请指教。
您可以模拟IController接口,然后将模拟对象传递到构造函数中。
var mockController = new Mock<IController>();
var controller = new Controller(mockController.Object);
您还需要设置要让模拟的FillViewBag执行的操作:
var mockController.Setup(c => c.FillViewBag).Callback(() => do something here);
Moq 快速入门中的大量信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.