如何在返回抽象对象 class 的方法中最小化服务调用?

How to moq a service call in a method which is returning an object of abstract class?

我想对我正在为其编写单元测试方法的方法中的服务调用进行最小起订量。

例如:

public void MethodUnderTest(data)
{
   XYZService.ServiceMethod(data);
}

上面的服务方法returns一个抽象的对象class(假设是ClassA)。即

    public ClassA ServiceMethod(ClassA data)
    {
         //code
    }


 public abstract class ClassA
    {
         //Code
    }

现在,如果我在测试 class 中将上述测试的最小起订量写为:

_xyzService.setup(x => x.ServiceMethod(data)).Returns(?);

如果我写 new ClassA() 代替 ?,我不应该像 class 那样做很抽象!

那么,我应该在 Return 中放置什么?

您没有创建模拟实例:

var mock = new Mock<ClassA>();
_xyzService.Setup(x => x.ServiceMethod(data)).Returns(mock.Object);

new Mock 只是创建了一个 class 派生自 ClassA 和 returns 那个 class 的一个实例。