Próbuję przetestować działanie kontrolera, które korzysta z dostawcy członkostwa, aby zaktualizować dane użytkownika. Używam Moq, który do tej pory był łatwy w użyciu.Prześmiewanie metod VB.NET za pomocą Moq
Problem polega na tym, że nie mogę sprawić, by kpił z wywołań metod, które niczego nie zwracają.
<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
Konfiguracja z wyśmiewali usługi członkostwa nie zostanie skompilowany, błąd jest:
rozdzielczości przeciążenia powiodło się, ponieważ nie dostępny „Ustawienia” można nazwać z te argumenty:
"Funkcja publiczna Konfiguracja (z TResult) (wyrażenie jako System.Linq.Expressions.Expression (of System.Func (of Services.IMembershipServic e, TResult))) As Moq.Language.Flow.ISetup (Z Services.IMembershipService, TResult) ": Wyrażenie nie generuje wartości .
„Public Function Setup (Of TResult) (wyrażenie Jak System.Linq.Expressions.Expression (z System.Func (z Services.IMembershipService, TResult))) jako Moq.Language.Flow. ISetup (of Services.IMembershipService, TResult) ': Typy danych parametru (typów) typu nie mogą być wywnioskowane z tych argumentów. Określenie typów danych jawnie może poprawić ten błąd .
„Public Function Setup (ekspresja Jako System.Linq.Expressions.Expression (z System.Action (z Services.IMembershipService))) jako Moq.Language.Flow.ISetup (z Services.IMembershipService) ": Wyrażenie nie generuje wartości.
Co przeoczyłem? Czy będę musiał stworzyć fałszywą klasę zamiast używać Moqa, kiedy moja klasa ma metodę, którą chcę wywołać?
Edit:
Ok, trochę czytanie wokół sugeruje to ze względu na sposób lambdas są wyrażone w VB przy użyciu funkcji(), która musi mieć wynik.
Czy ktoś znalazł w tym celu jakieś zadanie, czy też będę musiał zrezygnować z Moqa w celu udawania metod?
:(Wstyd naprawdę, poza tym naprawdę kocham Moqa.Jeśli proponuję szefowi, odkładamy prace na kolejny rok, aby mogli uzyskać VB10, myślę, że on mnie zabije! – Nick