首页 > 解决方案 > 模拟问题:无法实例化类的代理。找不到无参数构造函数

问题描述

我正在尝试为无法更改实现的类编写单元测试。以下是我在编写测试时看到的错误。

模拟单位:

public class ClassA : IInterface
{
    public readonly ClassB _classB = null;

    public ClassA(ClassB classB)
    {
        _classB = classB;
    }

    private ClassP<ClassB, ClassC> _classP;

    public virtual ClassP<ClassB, ClassC> TargetToMock => _classP ?? (_classP = new ClassP<ClassB, ClassC>(_classB));
}

嘲讽:

MockClassB = new Mock<ClassB>();

MockClassA = new Mock<ClassA>(MockClassB.Object);

设置:

MockClassA
    .Setup(s => s.TargetToMock.SomeMethod(argument1, argument2))
    .Returns(SomeResponseObject);

例外:

Castle.DynamicProxy.InvalidProxyConstructorArgumentsException:无法实例化类的代理:ClassP`2 [[ClassB,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null],[ClassC,Version=1.0.0.0,Culture=neutral,PublicKeyToken=无效的]]。 找不到无参数构造函数。

标签: c#.netunit-testingmockingmoq

解决方案


推荐阅读