我使用Moq在VB中模拟以下类:
Public class Factory(Of T)
Inherits Factory
Public Overridable Shadows Readonly Property Model() as TModel
Get
..
End Get
End Property
当我尝试使用Moq来模拟单元测试中的Model属性时:
Dim factory As New Mock(of Factory(Of TestModel))
factory.Setup(Function(i) i.Model).Returns(new TestModel With { .. })
失败并显示错误:
System.ArgumentException:类型为mock必须是接口或 抽象或非密封的课程。 ---> System.TypeLoadException:Access 被拒绝: ' PA.PSP.PFAD.Mvc.PFADFactory`1 [PA.PSP.PFAD.Mvc.OrderExtensionsTest + TestModel]&#39 ;. 结果StackTrace:at System.Reflection.Emit.TypeBuilder.TermCreateClass(RuntimeModule module,Int32 tk,ObjectHandleOnStack type)at System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()at System.Reflection.Emit.TypeBuilder.CreateType()at Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.CreateType(TypeBuilder 输入) Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType() 在 Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateType(字符串 name,Type [] interfaces,INamingScope namingScope)
任何想法为什么因为虽然它不是界面或摘要,但它没有被密封(没有在VB中定义NotInheritable)....
答案 0 :(得分:0)
您是否尝试将Model()设为虚拟?