gpt4 book ai didi

vb.net - 如何在 VB.NET 中使用 RhinoMocks 设置只读属性的返回值?

转载 作者:行者123 更新时间:2023-12-04 18:23:54 24 4
gpt4 key购买 nike

我在 VB.NET 中使用 RhinoMock,我需要为只读列表设置返回值。

这是我的想要要做(但不起作用):

dim s = Rhino.Mocks.MockRepository.GenerateStub(of IUserDto)()
s.Id = guid.NewGuid
s.Name = "Stubbed name"
s.Posts = new List(of IPost)

它在编译时失败,因为 Posts 是一个只读属性。

然后我尝试了一个 lambda 表达式,它适用于函数调用,但不适用于属性。这无法编译。
s.Stub(Function(x As IUserDto) x.Posts).Return(New List(Of IPost))

下一次(失败)尝试是使用 SetupResults,但这失败了,说明它不能在播放模式下使用。
Rhino.Mocks.SetupResult.For(s.Posts).Return(New List(Of IPost))

这让我回到了我的问题:

如何在 VB.NET 中使用 RhinoMocks 为只读属性设置返回值?

最佳答案

IUserDto一个界面?如果是,那么它应该可以工作。如果不是,那么问题可能是所讨论的只读属性不可覆盖。 RhinoMocks 只能模拟在接口(interface)中定义或可以被覆盖的属性/方法。

这是我证明 lambda 语法应该有效的(笨拙的)尝试:

Imports Rhino.Mocks

Public Class Class1

Public Sub Test()
Dim s = MockRepository.GenerateMock(Of IClass)()
Dim newList As New List(Of Integer)

newList.Add(10)

s.Stub(Function(x As IClass) x.Field).Return(newList)

MsgBox(s.Field(0))

End Sub

End Class

Public Class AnotherClass
Implements IClass

Public ReadOnly Property Field() As List(Of Integer) Implements IClass.Field
Get
Return New List(Of Integer)
End Get
End Property
End Class

Public Interface IClass
ReadOnly Property Field() As List(Of Integer)
End Interface

即,当调用 Class1.Test 时,我会得到一个显示数字 10 的消息框(我没有费心尝试用它连接一个单元测试框架,但这不应该有所作为)。

希望有所帮助(无论如何,尝试在 VB.NET 中使用 RhinoMocks 是一个有趣的练习)。

关于vb.net - 如何在 VB.NET 中使用 RhinoMocks 设置只读属性的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com