Я никогда не издевался над чем-то с делегатом и лямбдой, поэтому я не могу дать полного решения этой проблемы, но я хотел бы поделиться некоторым примером кода для обычной функции "AssertWasCalled" в Rhino Mocks 3.5 VB разработчиков, потому что я потратил некоторое время, пытаясь уловить это ... (имейте в виду, что ниже для краткости все просто)
Это тестируемый метод - может быть найден внутри класса обслуживания для объекта пользователя
Public Sub DeleteUserByID(ByVal id As Integer) Implements Interfaces.IUserService.DeleteUserByID
mRepository.DeleteUserByID(id)
End Sub
Это интерактивный тест для подтверждения того, что метод репозитория называется
<TestMethod()> _
Public Sub Should_Call_Into_Repository_For_DeleteProjectById()
Dim Repository As IUserRepository = MockRepository.GenerateStub(Of IUserRepository)()
Dim Service As IUserService = New UserService(Repository)
Service.DeleteUserByID(Nothing)
Repository.AssertWasCalled(Function(x) Wrap_DeleteUserByID(x))
End Sub
Это функция обтекания, используемая для обеспечения работы w / vb
Function Wrap_DeleteUserByID(ByVal Repository As IUserRepository) As Object
Repository.DeleteUserByID(Nothing)
Return Nothing
End Function
Я нашел, что это очень неприятное решение, но если оно поможет кому-то с теми же проблемами, что и у меня, оно того стоило, сколько времени понадобилось, чтобы опубликовать это;)