gpt4 book ai didi

C#:使用实现私有(private)接口(interface)的对象参数测试方法

转载 作者:行者123 更新时间:2023-11-28 21:28:26 25 4
gpt4 key购买 nike

我的第一个项目有一个方法,该方法返回一个模型对象实例,该实例是使用继承模型的私有(private)类 PrivateModel 和私有(private)接口(interface) IFoo 实现的。

示例:

项目 1:

public class Model {}
private interface IFoo {}
private class PrivateModel : Model, IFoo {}

// a sample class with the returning method
public class Bar
{
public static Model CreateModelInstance()
{ return new PrivateModel(); }

// code...
}

项目 2:

// get model instance
var model = Bar.CreateModelInstance(); // return a Model

第二个项目使用模型参数调用方法“Act”,但 Act 的实现测试模型是否为 PrivateModel(具有 IFoo 实现)。

项目 1:

public class Bar
{
// code...

public static bool Act(Model model)
{
// sample logic
return model is IFoo;
}
}

现在问题:

因为我必须测试一个调用 Act 方法的方法(它是静态的),而且我不能修改它,所以我必须构建一个实现 IFoo 的对象(它是私有(private)的)。我可以在测试项目(第三个项目)中实现类似于 TestClass: IFoo 的类,还是必须使用从 Project1 返回的模型?

最佳答案

您不能在定义接口(interface)的程序集/类之外实现私有(private)接口(interface)。

要么重新设计代码以使其更易于测试,要么使用从 Project1 返回的模型(或任何创建实现正确接口(interface)的模型)。

您的情况实际上可能是私有(private)接口(interface)有用的罕见情况之一 - 当您出于某种原因无法密封实现类时,请确保非常严格的对象创建规则。它是否对您的案例有用 - 您的电话。

关于C#:使用实现私有(private)接口(interface)的对象参数测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32258021/

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