Wie richte ich diese (Moq Setup)

Möchte ich testen, mein Teil des Codes, der gibt die Benutzer-Passwort-Frage. So habe ich mir vorgenommen ein Modell der Membership-provider mit Moq.

Ich glaube nicht, dass ich brauchen, um Ihnen zu zeigen der eigentliche code nur den test Teil.

//Arrange
var membershipMock = new Mock<MembershipProvider>();
membershipMock.Setup(m => m.GetUser("test", false).PasswordQuestion).Returns("Password");
authentication.Authenticate.Provider = membershipMock.Object;

//Act
var actual = authentication.PasswordRecoveryStep1(It.IsAny<string>());

//Assert
Assert.That(actual, Is.EqualTo("Password"));

So, wenn ich dieses in Nunit ich dieses:

Test.Controllers.AuthenticationControllerTest.Test_If_Password_Recovery_Setp1_Returns_Users_PasswordQuestion:
System.NotSupportedException : Only property accesses are supported in intermediate invocations on a setup. Unsupported expression m.GetUser("test", False).

at Moq.Mock.AutoMockPropertiesVisitor.VisitMethodCall(MethodCallExpression m)
at Moq.ExpressionVisitor.Visit(Expression exp)
at Moq.Mock.AutoMockPropertiesVisitor.VisitMemberAccess(MemberExpression m)
at Moq.ExpressionVisitor.Visit(Expression exp)
at Moq.Mock.AutoMockPropertiesVisitor.SetupMocks(Expression expression)
at Moq.Mock.GetInterceptor(LambdaExpression lambda, Mock mock)
at Moq.Mock.<>c__DisplayClass15`2.<SetupGet>b__14()
at Moq.PexProtector.Invoke[T](Func`1 function)
at Moq.Mock.SetupGet[T1,TProperty](Mock mock, Expression`1 expression)
at Moq.Mock.<>c__DisplayClass12`2.<Setup>b__11()
at Moq.PexProtector.Invoke[T](Func`1 function)
at Moq.Mock.Setup[T1,TResult](Mock mock, Expression`1 expression)
at Moq.Mock`1.Setup[TResult](Expression`1 expression)
at Test.Controllers.AuthenticationControllerTest.Test_If_Password_Recovery_Setp1_Returns_Users_PasswordQuestion() in D:\MvcApplication9\Test\Controllers\AuthenticationControllerTest.cs:line 186

So, ich vermute, es ist etwas wegen der Eigenschaft, die ich versuche zu zugreifen. Ich bin nicht sicher, wie Sie Sie, um es einzurichten. Ich bin nicht sehr gut mit lambdas (und nicht in der Lage zu finden, ein tutorial auf Sie noch) also ich bin nicht sicher, ob ich konnte einige, wie vereinbaren Sie es anders machen, damit es funktioniert.

Oder ob ich einfach nur völlig verfehlt die Marke.

InformationsquelleAutor chobo2 | 2009-06-27

Schreibe einen Kommentar