2

我正在尝试创建一个类似于我在 C# 中所做的单元测试,但在 vb 中的 lambdas 中遇到了困难。

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

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

但是在visual basic中,我正在尝试做类似的事情,但无法弄清楚语法

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

任何有关如何重现上述内容的建议将不胜感激!

亲切的问候, 多姆

4

2 回答 2

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)
于 2009-05-12T14:31:29.373 回答
0

像这样的东西会起作用吗?

MockedPersonRepository_
    .Stub(Function(x) x.Find(id))_
    .[Return](person)
于 2009-05-12T14:32:27.047 回答