【发布时间】:2009-07-06 15:29:13
【问题描述】:
我在 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 为只读属性设置返回值?
【问题讨论】:
-
为什么 Rhino.Mocks.SetupResult.For(s.Posts).Return(New List(Of IPost)) 失败了?
-
在播放模式下无效,失败
-
您能提供更多代码吗?听起来您可能会将新的 AAA 语法与旧的 Record-Playback 方法混为一谈,这无济于事。我不熟悉 VB.NET,但是在 C# 中可以很容易地对只读属性(即没有设置器的属性)进行存根。
-
顺便问一下,您的 lambda 表达式尝试是如何失败的?是测试失败还是代码编译失败?
-
是的,我正在混合 AAA 和录制/播放。我正在抓住任何可用的吸管。我不熟悉使用模拟和 AAA 风格“更适合”我,但我会做任何有效的事情。 lambda (s.Stub(Function....) 编译失败。
标签: vb.net rhino-mocks