类型为mock必须是接口或抽象或非密封类

时间:2015-03-24 15:00:42

标签: .net vb.net unit-testing moq

我使用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)....

1 个答案:

答案 0 :(得分:0)

您是否尝试将Model()设为虚拟?