我正在为 ASP.Net Core 应用程序的控制器操作编写测试。我的应用程序的所有控制器都继承自基本控制器,我们称其为
MyBaseController
。这个类的构造函数如下所示:
public MyBaseConstructor(ServiceA serviceA, ServiceB serviceB)
{
m_serviceA = serviceA;
m_serviceB = serviceB;
}
所以任何继承的类都可以用这个来模拟:
protected TController MockedController<TController>() where TController: MyBaseController
{
var moqController = new Mock<TController>(serviceAMock, serviceBMock);
return moqController.Object;
}
这工作得很好,直到我们有继承自
MyBaseController
的类并需要 ServiceC serviceC
附加参数。
当我尝试使用额外参数对此类控制器运行测试时,出现错误:“无法找到与给定参数匹配的构造函数”。情况似乎很清楚,但我不知道如何编写通用构造函数模拟以避免为此类类创建特定方法(其中很多具有不同的构造函数参数)。
有什么方法可以实现我的目标吗?或者最好的方法是编写单独的方法来模拟具有不同参数的类?