在VB.NET 2008中使用Lambda进行单元测试和Rhino.Mocks

时间:2009-05-12 14:28:12

标签: .net vb.net unit-testing lambda rhino-mocks

我正在尝试创建一个类似于我在C#中完成一个单元测试的单元测试,但我正在与vb中的lambdas进行斗争。

基本上我正在尝试模拟一个类,然后创建一个存根并返回。在C#中我会做类似的事情;

MockedPersonRepository
     .Stub(x => x.Find(id))
     .Return(person)

但是在visual basic中我试图做类似的事情,但无法解决语法

   MockedPersonRepository.Stub(Function... argh!!!

任何关于如何重现上述内容的建议都将非常感谢!

亲切的问候, DOM

2 个答案:

答案 0 :(得分:3)

我通常展示的一个简单示例(因为我也是VB开发人员)如下所示:(由于VB中的某些奇怪原因,您需要将其拉出到另一个不返回任何内容的函数中)

  <TestMethod()> _
  Public Sub Should_Call_Into_Repository_For_GetAllUsers()
    Dim Repository As IUserRepository = MockRepository.GenerateStub(Of IUserRepository)()
    Dim Service As IUserService = New UserService(Repository)

    Service.GetAllUserCollection()

    Repository.AssertWasCalled(Function(x) Wrap_GetAllUserCollection(x))
  End Sub

Function Wrap_GetAllUserCollection(ByVal Repository As IUserRepository) As Object
    Repository.GetAllUserCollection()

    Return Nothing
  End Function

以上是基于交互的测试,下面可能更接近您当前示例中的内容

Dim StubUserObject As New User(1, "9999", "jdoe", "John", "Doe", 1)

    UserService.Stub(Function(x) x.GetUserByID(1)).[Return](StubUserObject)

答案 1 :(得分:0)

这样的事情会起作用吗?

MockedPersonRepository_
    .Stub(Function(x) x.Find(id))_
    .[Return](person)