如何在 VB.Net 中使用 RhinoMocks 模拟一种方法?我找到的引用是 C# 语言:
Expect.Call(delegate{list.Add(0);}).IgnoreArguments()
.Do((Action<int>)delegate(int item) {
if (item < 0) throw new ArgumentOutOfRangeException();
});
SharpDevelop 将其转换为:
Expect.Call(Function() Do
list.Add(0)
End Function).IgnoreArguments().Do(DirectCast(Function(item As Integer) Do
If item < 0 Then
Throw New ArgumentOutOfRangeException()
End If
End Function, Action(Of Integer)))
但这也不起作用(它无法编译)。
这就是我想要做的:创建一个新对象并调用一个方法来设置该方法的一些属性。在现实生活中,此方法将使用数据库中找到的值填充属性。在测试中,我想使用自定义方法/委托(delegate)来模拟此方法,以便我可以自己设置属性(无需访问数据库)。
在伪代码中,这就是我想要做的:
Dim _lookup As LookUp = MockRepository.GenerateMock(Of LookUp)()
_luvalue.Expect(Function(l As LookUp) l.GetLookUpByName("test")).Do(Function(l As LookUp) l.Property = "value")
最佳答案
不幸的是,您正在尝试同时执行 Sub lambda 和 Statement Lambda。 VS2008 中均不支持(但即将推出的 VS 版本将支持)。这是适用于 VB 的扩展版本
我猜测 m_list 的类型
Class MockHelper
Dim m_list as new List(Of Object)
Public Sub New()
Expect(AddressOf CallHelper).IgnoreArguments().Do(AddressOf Do Hepler)
End Sub
Private Sub CallHelper()
m_list.Add(0)
End Sub
Private Sub DoHelper(ByVal item as Integer)
if item < 0 Then
Throw New ArgumentOutOfRangeException
End If
End Sub
End Class
关于vb.net - 如何在 VB.NET 中使用 Rhino Mocks 模拟方法(自定义行为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/545794/