gpt4 book ai didi

c# - 模拟从另一个类继承的类

转载 作者:太空狗 更新时间:2023-10-29 21:51:34 24 4
gpt4 key购买 nike

这是场景,我正在重构一些意大利面条代码。我的第一个问题是一系列类更新了其他类,我通过让我要测试的类 (Search.cs) 的构造函数将它需要的类作为依赖项来解决这个问题,现在看起来像这样。

 public Search(XmlAccess xmlFile, SearchDatabaseConnect searchDatabaseConnection)
{
this.xmlFile = xmlFile;
FsdcConnection = searchDatabaseConnection;
Clear();
}

我正在进一步更新它。这一切都很好,但我有一个小问题。

我正在注入(inject)的类继承自另一个类,我有 Resharper 并且提取了接口(interface),但问题是依赖类继承自另一个具体类 - 明白我的意思吗?

 public class SearchDatabaseConnect : DatabaseConnect, ISearchDatabaseConnect 
{ // }

我不知道如何处理 DatabaseConnect 上的继承?我怎么 mock 它?显然,如果那不存在,我会准备就绪,我可以模拟一个 ISearchDatabaseConnect 然后离开,但我被困在一个具体类的继承上。我敢肯定,在我的谷歌搜索失败之前,人们已经遇到过这个问题,因为我找不到关于这个的例子。

提前感谢您提供任何有用的建议。

最佳答案

是否 DatabaseConnect也有从中提取的接口(interface)吗?我认为您应该能够像这样设置它:

public interface IDatabaseConnect

public class DatabaseConnect : IDatabaseConnect

public interface ISearchDatabaseConnect : IDatabaseConnect

public class SearchDatabaseConnect : DatabaseConnect, ISearchDatabaseConnect

现在制作 Mock<ISearchDatabaseConnect>将从两个接口(interface)获取所有“东西”。


旁注,你的方法/构造函数可能应该接受接口(interface),而不是具体的:

public Search(XmlAccess xmlFile, ISearchDatabaseConnect searchDatabaseConnection) { ... }

这样你就可以注入(inject)模拟,比如:

var mockedSearchDatabaseConnect = new Mock<ISearchDatabaseConnect>();
var search = new Search(xmlFile, mockedSearchDatabaseConnect.Object);

关于c# - 模拟从另一个类继承的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com