C# 带Moq构造函数的Autofac';Castle.Proxies.ClassXProxy';找不到

C# 带Moq构造函数的Autofac';Castle.Proxies.ClassXProxy';找不到,c#,moq,autofac,C#,Moq,Autofac,我正在使用Autofac和Moq来促进单元测试。 我有下面的模拟代码,但没有运气 MockObject.Setup(factory => factory.Request(this.testSubsystemName, RestSharp.Method.GET).BuildServiceConnector(It.IsAny<Uri>(), It.IsAny<int>(), It.IsAny<int>(), null).Execute<Configur

我正在使用Autofac和Moq来促进单元测试。 我有下面的模拟代码,但没有运气

MockObject.Setup(factory => factory.Request(this.testSubsystemName, RestSharp.Method.GET).BuildServiceConnector(It.IsAny<Uri>(), It.IsAny<int>(), It.IsAny<int>(), null).Execute<ConfigurationEntries>())
                  .Returns(new RestResponse<ConfigurationEntries> { Content = this.subSystemConfigs.ToEntries().ToString(), StatusCode = HttpStatusCode.OK });
当我运行代码时,会出现以下异常:

引发异常:mscorlib.dll中的“System.MissingMethodException”。其他信息:找不到类型“Castle.Proxies.ClassXProxy”的构造函数

我已经尝试了在componentRegistry上注册ClassX的答案

mockScope.Container.ComponentRegistry.Register(RegistrationBuilder.ForType<ClassX>()
                                     .As<ClassX>()
                                     .CreateRegistration<ClassX, ConcreteReflectionActivatorData, SingleRegistrationStyle>());
mockScope.Container.ComponentRegistry.Register(RegistrationBuilder.ForType())
.As()
.CreateRegistration());

有人能告诉我如何正确地解决这个问题吗。谢谢

据我所知,为了模拟一个对象,Moq需要一个
受保护的
无参数构造函数。您可能应该在异常和ClassX上发布完整的堆栈跟踪,但这看起来肯定像是Moq/DynamicProxy问题,而不是Autofac。尝试做一个更简单的测试,从混合中删除Autofac进行验证,您可能可以简化您的问题以获得更好的答案。我通过逐行创建依赖项的模拟对象来解决这个问题。我认为问题在于ClassX没有无参数构造函数,在我模拟请求方法返回带有字符串和方法的模拟ClassX之后,一切都正常了。谢谢你们的人。
mockScope.Container.ComponentRegistry.Register(RegistrationBuilder.ForType<ClassX>()
                                     .As<ClassX>()
                                     .CreateRegistration<ClassX, ConcreteReflectionActivatorData, SingleRegistrationStyle>());