vb.net - 如何在 VB.NET 中使用 Rhino Mocks 模拟方法(自定义行为)

标签 vb.net mocking rhino-mocks

如何在 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/

相关文章:

vb.net - TableLayoutPanel 和 StatusTrip 工具栏重叠

c# - 如何将文本框值添加到 Access 数据库?

asp.net-mvc - 在不访问数据库的情况下测试 ASP.NET MVC Controller 的干净方法?

c# - 在 db.database.BeginTransaction() 范围下添加时,Entity FrameWork Core 不响应 where() 查询 -Exception(请求超时)

c# - 在 using 语句中创建的 Rhino 模拟和对象

rhino-mocks - 如何测试只写属性

c# - VB Linq 到 C# Linq

java - Java 与 VB.net 中的 RGB 颜色

python - 如何使用临时文件系统在 python 中模拟 os.walk?

c# - 如何使用 Rhino Mocks 模拟 MEF 导出?