Debugging 要模拟的AutoMock CreateInstance类型必须是接口、委托或非密封的非静态类

Debugging 要模拟的AutoMock CreateInstance类型必须是接口、委托或非密封的非静态类,debugging,autofac,automocking,Debugging,Autofac,Automocking,当使用Moq.AutoMock.autoMocker模拟“autoMocker.CreateInstance();”时,我得到下面的一般消息。HeliumController类的构造函数具有多个接口。如何找到无法模拟的特定接口或构造函数 {System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NotSupporte

当使用Moq.AutoMock.autoMocker模拟“autoMocker.CreateInstance();”时,我得到下面的一般消息。HeliumController类的构造函数具有多个接口。如何找到无法模拟的特定接口或构造函数

{System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.NotSupportedException: Type to mock must be an interface, a delegate, or a non-sealed, non-static class.
   at Moq.Guard.IsMockable(Type type)
   at Moq.Mock`1..ctor(MockBehavior behavior, Object[] args)
   at Moq.Mock`1..ctor(MockBehavior behavior)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture)
   at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateInstance(Type type, Object[] args)
   at Moq.AutoMock.Resolvers.MockResolver.Resolve(MockResolutionContext context)
   at Moq.AutoMock.AutoMocker.Resolve(Type serviceType, Object initialValue)
   at Moq.AutoMock.AutoMocker.Resolve(Type serviceType)
   at Moq.AutoMock.AutoMocker.Get(Type serviceType)
   at Moq.AutoMock.AutoMocker.<CreateArguments>b__58_0(ParameterInfo x)
   at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Moq.AutoMock.AutoMocker.CreateArguments(Type type, BindingFlags bindingFlags)
   at Moq.AutoMock.AutoMocker.CreateInstance(Type type, Boolean enablePrivate)
   at Moq.AutoMock.AutoMocker.CreateInstance[T](Boolean enablePrivate)
   at Moq.AutoMock.AutoMocker.CreateInstance[T]()
   at Helium.Api.Tests.API.v2.HeliumControllerSearchTests..ctor()
{System.Reflection.TargetInvocationException:调用的目标已引发异常。
--->System.NotSupportedException:要模拟的类型必须是接口、委托或非密封的非静态类。
最小起订量时,防护装置可锁定(类型)
在Moq.Mock`1..ctor(MockBehavior行为,对象[]args)
最小起订量时模拟'1..ctor(模拟行为)
---内部异常堆栈跟踪的结束---
在System.RuntimeMethodHandle.InvokeMethod(对象目标、对象[]参数、签名符号、布尔构造函数、布尔WrapeExceptions)
在System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr、Binder Binder、Object[]参数、CultureInfo区域性)
位于System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr、Binder Binder、Object[]args、CultureInfo区域性)
在System.Activator.CreateInstance(类型类型、BindingFlags bindingAttr、Binder Binder、对象[]参数、CultureInfo区域性、对象[]ActivationAttribute)
位于System.Activator.CreateInstance(类型,对象[]args)
在Moq.AutoMock.Resolvers.MockResolver.Resolve(MockResolutionContext上下文)
在Moq.AutoMock.AutoMocker.Resolve处(类型serviceType,对象初始值)
在Moq.AutoMock.AutoMocker.Resolve时(类型serviceType)
在Moq.AutoMock.AutoMocker.Get(类型serviceType)
最小起订量时。自动模拟。自动模拟。b_uu58_u0(参数信息x)
在System.Linq.Enumerable.SelectArrayInterator`2.ToArray()中
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1源)
在Moq.AutoMock.AutoMocker.CreateArguments处(类型类型,BindingFlags BindingFlags)
在Moq.AutoMock.AutoMocker.CreateInstance(类型类型,布尔启用私有)
在Moq.AutoMock.AutoMocker.CreateInstance[T](布尔启用私有)
在Moq.AutoMock.AutoMocker.CreateInstance[T]()
在Helium.Api.Tests.Api.v2.HeliumControllerSearchTests..ctor()中

不幸的是,这将是一个反复试验的过程,检查构造函数所采用的类型,然后检查其中是否有不符合要求的类型-我首先要开始并查看您正在使用的密封类,因为这可能是原因。接口、非密封、非静态和委托-这些都可能是错误的卡德

我确实注意到异常中没有任何行号。我收集的信息可能是在“发布”模式下测试的,因此符号不可用。“调试”模式下的异常堆栈通常具有发生异常的实际行号-这可能有助于在“调试”模式下编译和运行测试模式来查看实际线路。这样可以缩小范围

似乎他们可以很容易地将实际的类型名称添加到异常中,但这并没有发生。如果我是你,请他们更新以将类型名称包含在异常中。如果他们同意,那么提交给他们并改进产品,同时解决您的问题,似乎是一个非常简单的拉动请求莱姆