测试带有实现私有接口的对象参数的方法

本文关键字:对象 参数 方法 实现 测试 接口 | 更新日期: 2023-09-27 18:10:04

我有一个第一个项目,它的方法返回一个由私有类PrivateModel继承Model和私有接口IFoo实现的Model对象实例。

示例:

Project1:

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...
}

Project2:

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

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

Project1:

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

现在的问题是:

因为我必须测试一个执行调用Act方法的方法(它是静态的),我不能编造它,我必须构建一个实现IFoo的对象(这是私有的)。我是否可以在测试项目(第三个项目)中实现类似于TestClass: IFoo的类,或者我必须使用从Project1返回的Model ?

测试带有实现私有接口的对象参数的方法

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

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

您的情况实际上可能是私有接口有用的罕见情况之一-当您由于某种原因无法密封实现类时,请确保非常严格的对象创建规则。是否对你的案子有用——你说了算。