Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.Net中的Moq重载属性_Vb.net_Moq - Fatal编程技术网

VB.Net中的Moq重载属性

VB.Net中的Moq重载属性,vb.net,moq,Vb.net,Moq,我有一个遗留类,大致如下: Public Class MyOverloadExample Public Overridable ReadOnly Property SomeDescription() As String Get Return "No Parameter" End Get End Property Public ReadOnly Property SomeDescript

我有一个遗留类,大致如下:

Public Class MyOverloadExample
    Public Overridable ReadOnly Property SomeDescription() As String
            Get
                Return "No Parameter"
            End Get
        End Property
    Public ReadOnly Property SomeDescription(ByVal p1 As Integer) As String
            Get
                Return "Used Parameter"
            End Get
        End Property
End Class
我想在没有参数的第一个
SomeDescription
属性上
SetupGet
。我试过这个:

Dim mock = New Mock(Of MyOverloadExample)
mock.SetupGet(Function(i) i.SomeDescription()).Returns("Mocked the No Parameter Property")
但它失败了,只有一个例外:

threw exception: 
System.Reflection.AmbiguousMatchException: Ambiguous match found.
    at System.RuntimeType.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
   at System.Type.GetProperty(String name, BindingFlags bindingAttr)
   at Moq.ExpressionExtensions.ToPropertyInfo(LambdaExpression expression) in C:\projects\moq4\src\Moq\ExpressionExtensions.cs:line 47
   at Moq.Mock.SetupGetPexProtected[T,TProperty](Mock`1 mock, Expression`1 expression, Condition condition) in C:\projects\moq4\src\Moq\Mock.cs:line 511
   at Moq.PexProtector.Invoke[T1,T2,T3,TResult](Func`4 function, T1 arg1, T2 arg2, T3 arg3) in C:\projects\moq4\src\Moq\PexProtector.cs:line 38
   at Moq.Mock.SetupGet[T,TProperty](Mock`1 mock, Expression`1 expression, Condition condition) in C:\projects\moq4\src\Moq\Mock.cs:line 496
   at Moq.Mock`1.SetupGet[TProperty](Expression`1 expression) in C:\projects\moq4\src\Moq\Mock.Generic.cs:line 332
mock.SetupGet(Function(i) i.SomeDescription).Returns("Mocked the No Parameter Property")
我在没有空()的情况下尝试了,但得到了相同的异常:

threw exception: 
System.Reflection.AmbiguousMatchException: Ambiguous match found.
    at System.RuntimeType.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
   at System.Type.GetProperty(String name, BindingFlags bindingAttr)
   at Moq.ExpressionExtensions.ToPropertyInfo(LambdaExpression expression) in C:\projects\moq4\src\Moq\ExpressionExtensions.cs:line 47
   at Moq.Mock.SetupGetPexProtected[T,TProperty](Mock`1 mock, Expression`1 expression, Condition condition) in C:\projects\moq4\src\Moq\Mock.cs:line 511
   at Moq.PexProtector.Invoke[T1,T2,T3,TResult](Func`4 function, T1 arg1, T2 arg2, T3 arg3) in C:\projects\moq4\src\Moq\PexProtector.cs:line 38
   at Moq.Mock.SetupGet[T,TProperty](Mock`1 mock, Expression`1 expression, Condition condition) in C:\projects\moq4\src\Moq\Mock.cs:line 496
   at Moq.Mock`1.SetupGet[TProperty](Expression`1 expression) in C:\projects\moq4\src\Moq\Mock.Generic.cs:line 332
mock.SetupGet(Function(i) i.SomeDescription).Returns("Mocked the No Parameter Property")

是否有一些lambda/moq魔术我错过了,或者这只是不可能与moq

C#没有参数化属性,VB.NET有。如中所述,这是首次提出的,显然还没有解决。2008年的问题是针对带有参数的属性设置器。我还没有尝试用参数模拟setter,所以不确定它现在是否已修复。mock属性getter可以工作,但在这种情况下,一个重载了参数,另一个重载了参数。我来看看谷歌代码人员的日志记录问题。@DarrenJ.McLeod同样的情况是否也发生在
设置中?ie:
mock.Setup(Function(i)i.SomeDescription())。返回(“Mocked the No Parameter属性”)
@Nkosi Setup也会发生同样的情况。C#没有参数化属性,VB.NET有。如中所述,这是首次提出的,显然还没有解决。2008年的问题是针对带有参数的属性设置器。我还没有尝试用参数模拟setter,所以不确定它现在是否已修复。mock属性getter可以工作,但在这种情况下,一个重载了参数,另一个重载了参数。我来看看谷歌代码人员的日志记录问题。@DarrenJ.McLeod同样的情况是否也发生在
设置中?ie:
mock.Setup(Function(i)i.SomeDescription())。返回(“Mocked the No-Parameter属性”)
@Nkosi同样的情况也会发生在Setup中。