Verspotten von VB.NET-Methoden mit Moq

Ich versuche, eine Controller-Aktion zu testen, bei der der Mitgliedschaftsanbieter zum Aktualisieren der Benutzerdetails verwendet wird. Ich benutze Moq, das bisher einfach zu bedienen war.

Das Problem ist, dass ich es scheinbar nicht schaffen kann, Aufrufe von Methoden zu verspotten, die nichts zurückgeben.

<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

Das Setup des gespielten Mitgliedschaftsdienstes wird nicht kompiliert. Der Fehler lautet:

Die Überladungsauflösung ist fehlgeschlagen, da mit den folgenden Argumenten kein zugängliches 'Setup' aufgerufen werden kann:

'Public Function Setup (Of TResult) (Ausdruck As System.Linq.Expressions.Expression (Of System.Func (Of Services.IMembershipService, TResult)) As Moq.Language.Flow.ISetup (Of Services.IMembershipService, TResult)' : Ausdruck erzeugt keinen Wert.

'Public Function Setup (Of TResult) (Ausdruck As System.Linq.Expressions.Expression (Of System.Func (Of Services.IMembershipService, TResult)) As Moq.Language.Flow.ISetup (Of Services.IMembershipService, TResult)' : Aus diesen Argumenten können Datentypen vom Typ Parameter nicht abgeleitet werden. Durch die explizite Angabe der Datentypen kann dieser Fehler möglicherweise behoben werden.

'Public Function Setup (Ausdruck als System.Linq.Expressions.Expression (von System.Action (von Services.IMembershipService))) als Moq.Language.Flow.ISetup (von Services.IMembershipService)': Ausdruck erzeugt keinen Wert.

Was habe ich vermisst? Muss ich eine gefälschte Klasse erstellen, anstatt Moq zu verwenden, wenn meine Klasse eine Methode hat, die ich aufrufen möchte?

Bearbeiten:

Ok, ein wenig herumlesen deutet darauf hin, dass dies auf die Art und Weise zurückzuführen ist, wie Lambdas in VB mit Function () ausgedrückt werden, was ein Ergebnis haben muss.

Hat jemand eine Lösung dafür gefunden oder muss ich Moq wegen falscher Methoden absetzen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage