Использование лямбды в модульном тестировании в VB.NET 2008 с Rhino.Mocks - PullRequest
2 голосов
/ 12 мая 2009

Я пытаюсь создать модульный тест, похожий на тот, который я бы сделал в C #, но я борюсь с лямбдами в vb.

По сути, я пытаюсь насмехаться над классом, а затем создать заглушку и вернуться. В C # я бы сделал что-то вроде:

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

Но в Visual Basic я пытаюсь сделать то же самое, но не могу понять синтаксис

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

Любой совет о том, как воспроизвести вышеупомянутое, был бы очень признателен!

С уважением, Дом

Ответы [ 2 ]

3 голосов
/ 12 мая 2009

Один простой пример, который я обычно показываю (так как я также являюсь разработчиком 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)
0 голосов
/ 12 мая 2009

Хотелось бы что-нибудь подобное?

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