Mocking VB.NET Métodos Com Moq
Eu estou tentando unidade testar uma ação do controlador que usa o provedor de associação para atualizar detalhes do usuário. Eu estou usando o Moq, que até agora tem sido fácil de usar.
O problema é que não consigo fazer com que ele simule chamadas para métodos que não retornam 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
A configuração do serviço de associação falsa não será compilada, o erro é:
A resolução de sobrecarga falhou porque nenhum 'Setup' acessível pode ser chamado com esses argumentos:
'Configuração de função pública (de TResult) (expressão como System.Linq.Expressions.Expression (de System.Func (Of Services.IMserviceService, TResult))) como Moq.Language.Flow.ISetup (Of Services.IMssociationService, TResult)' : Expressão não produz um valor.
'Configuração de função pública (de TResult) (expressão como System.Linq.Expressions.Expression (de System.Func (Of Services.IMserviceService, TResult))) como Moq.Language.Flow.ISetup (Of Services.IMssociationService, TResult)' : Tipo (s) de dados do (s) parâmetro (s) do tipo não podem ser inferidos a partir desses argumentos. A especificação explícita do (s) tipo (s) de dados pode corrigir esse erro.
'Public Function Setup (expressão como System.Linq.Expressions.Expression (Of System.Action (Of Services.IMembershipService))) Como Moq.Language.Flow.ISetup (Of Services.IMembershipService)': Expressão não produz um valor.
O que eu perdi? Eu terei que criar uma classe falsa ao invés de usar o Moq sempre que minha classe tiver um método que eu queira chamar?
Editar:
Ok, um pouco de leitura sugere que isso se deve à maneira como os lambdas são expressos em VB usando Function (), o que deve ter um resultado.
Alguém encontrou um trabalho para isso ou eu vou ter que abandonar Moq por métodos de falsificação?