Mocking VB.NET Métodos Con Moq
Estoy intentando realizar una prueba unitaria de una acción del controlador que utiliza el proveedor de membresía para actualizar los detalles del usuario. Estoy usando Moq que hasta ahora ha sido fácil de usar.
El problema es que parece que no puedo hacerlo para simular llamadas a métodos que no devuelven nada.
<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
La configuración del servicio de membresía simulado no se compilará, el error es:
La resolución de sobrecarga falló porque no se puede llamar a una 'Configuración' accesible con estos argumentos:
'Configuración de función pública (de TResult) (expresión como System.Linq.Expressions.Expression (Of System.Func (Of Services.IMembershipService, TResult))) Como Moq.Language.Flow.ISetup (Of Services.IMembershipService, TResult)' : La expresión no produce un valor.
'Configuración de función pública (de TResult) (expresión como System.Linq.Expressions.Expression (Of System.Func (Of Services.IMembershipService, TResult))) Como Moq.Language.Flow.ISetup (Of Services.IMembershipService, TResult)' : Los tipos de datos de los parámetros de tipo no se pueden inferir de estos argumentos. Especificar los tipos de datos explícitamente podría corregir este error.
'Configuración de función pública (expresión Como System.Linq.Expressions.Expression (Of System.Action (Of Services.IMembershipService))) Como Moq.Language.Flow.ISetup (Of Services.IMembershipService)': La expresión no produce un valor.
¿Qué me he perdido? ¿Tendré que crear una clase falsa en lugar de usar Moq cada vez que mi clase tenga un método al que quiero recurrir?
Editar:
Ok, una pequeña lectura sugiere que esto se debe a la forma en que las lambdas se expresan en VB usando la Función () que debe tener un resultado.
¿Alguien ha encontrado una solución para esto o voy a tener que deshacerme de Moq por métodos falsos?