1
我是单元测试新手。尝试整合遗留代码的单元测试。 要moq类的相同的方法,我需要注入接口或有任何其他选项。单元测试C#MOQ依赖注入
如果向构造函数的接口注入是唯一的方法,那么如何定义现有代码的默认构造函数。 实施例:
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();
}
对于上述代码我能够进行单元测试。 但是,如果我浏览的方法(手动测试行动)它是失败的对象ref没有设置。因为对象是空的。如何解决这个问题?
另外我在很多地方使用FillViewBag,那些地方我现在不想改变基于接口的调用。请指教。
非常感谢您的答复。我已经提到了我的问题中的相同内容。我在模拟中没有任何问题。但在应用程序中,我正在使用函数调用_interface.FillViewBag()这是给对象引用没有设置错误。 (如果我运行该项目 - 不单位测试)。基本上我会通过传递模拟接口来从单元测试中调用控制器类。这工作正常。如果我想调用控制器类的方法应该做什么。请指教!! – Antony
https://kakimotonline.com/2011/02/13/tdd-in-asp-net-mvc-applications-with-moq-framework/这是我如何做嘲笑。但问题是,我的菜单路由到ProductController/List。在调用它时由于构造器参数无效而失败。那么我是否需要提供额外的默认构造函数而没有任何参数?如果我这样做,我正在获取对象引用错误。请指教 – Antony