Я пытаюсь выполнить тестирование тестового действия контроллера, которое использует поставщик членства для обновления данных пользователя. Я использую Moq, который до сих пор был прост в использовании.Mocking VB.NET Methods With Moq
Проблема в том, что я не могу заставить ее высмеивать вызовы методам, которые ничего не возвращают.
<TestMethod()> _
Public Sub Can_Update_User()
' Arrange
_membershipService.Setup(Function(x) x.UpdateUser(It.IsAny(Of MembershipUser)))
Dim controller As New UsersController(_membershipService.Object, _roleProvider.Object, _supportWorksService.Object, _portalClientService.Object)
' Act
Dim result As ViewResult = controller.Edit("testUser", New FormCollection)
' Assert
Assert.AreEqual("Index", result.ViewName)
End Sub
Установка на издевались служба членства не будет компилировать, ошибка:
разрешение перегрузки не удалось, поскольку не доступна «Настройки» можно назвать с этих аргументы:
'Публичная функция Настройка (из TResult) (выражение As System.Linq.Expressions.Expression (Of System.Func (Of Services.IMembershipServic e, TResult))) Как Moq.Language.Flow.ISetup (Of Services.IMembershipService, TResult) ': Выражение не производит значение.
«Setup Public Function (Of TResult) (выражение Как System.Linq.Expressions.Expression (Of System.Func (Из Services.IMembershipService, TResult))) Как Moq.Language.Flow. ISetup (Of Services.IMembershipService, TResult) ': Тип данных (ы) типа параметр (ы) не может быть выведен из этих аргументов. Указание данных тип (и) явно может исправить ошибку .
«Public Function Setup (выражение Как System.Linq.Expressions.Expression (Of System.Action (Of Services.IMembershipService))) Как Moq.Language.Flow.ISetup (Of Services.IMembershipService) ': Выражение не дает значения.
Что я пропустил? Должен ли я создавать фальшивый класс, а не использовать Moq в любое время, когда у моего класса есть метод, который я хочу вызвать?
Edit:
Хорошо, немного чтение вокруг предполагает, что это связано с тем, как лямбды выражаются в VB с помощью функции(), который должен иметь результат.
Неужели кто-нибудь нашел работу для этого или мне придется вырезать Moq для поддельных методов?
:(Позор действительно, кроме этого, я действительно люблю Moq. Если я предлагаю боссу, мы отложим разработку на следующий год, чтобы они могли получить VB10, я думаю, он убьет меня! – Nick