模拟从另一个类继承的类
本文关键字:继承 另一个 模拟 | 更新日期: 2023-09-27 18:23:52
这是一个场景,我正在重构一些意大利面条代码。我的第一个问题是一系列新的类,我通过让我要测试的类的ctor(Search.cs)将它需要的类作为依赖项来解决这个问题,现在看起来是这样的。
public Search(XmlAccess xmlFile, SearchDatabaseConnect searchDatabaseConnection)
{
this.xmlFile = xmlFile;
FsdcConnection = searchDatabaseConnection;
Clear();
}
我正在把它往上推。这很好,但我有一个小问题。
我正在ctor注入的类继承自另一个类,我有Resharper,我提取了接口,但问题是依赖类继承自其他具体类-明白我的意思了吗?
public class SearchDatabaseConnect : DatabaseConnect, ISearchDatabaseConnect
{ // }
我不知道如何处理DatabaseConnect上的继承?我该怎么嘲笑它?很明显,如果没有这一点,我会全力以赴,我可以模拟ISearchDatabaseConnect,然后我们就走了,但我被一个具体类的继承所束缚。我相信在我的谷歌搜索失败之前,人们就已经遇到过这种情况。
提前感谢您的任何有用建议。
DatabaseConnect
是否也有从中提取的接口?我认为你应该能够将其设置为:
public interface IDatabaseConnect
public class DatabaseConnect : IDatabaseConnect
public interface ISearchDatabaseConnect : IDatabaseConnect
public class SearchDatabaseConnect : DatabaseConnect, ISearchDatabaseConnect
现在,制作Mock<ISearchDatabaseConnect>
将从两个接口获得所有"东西"。
附带说明,你的方法/构造函数可能应该接受接口,而不是具体的:
public Search(XmlAccess xmlFile, ISearchDatabaseConnect searchDatabaseConnection) { ... }
这样你就可以注入mock,比如:
var mockedSearchDatabaseConnect = new Mock<ISearchDatabaseConnect>();
var search = new Search(xmlFile, mockedSearchDatabaseConnect.Object);