Scheinidentität und IPrincipal
Ich möchte nur fragen, wie ich diese Objekte in meinen Unit-Tests besser versorgen könnte.
In meinem Komponententest teste ich ein CSLA-Objekt. Das CSLA-Objekt verwendet intern eine Eigenschaft und eine Methode des ApplicationUser-Objekts. ApplicationUser wird von IPrincipal geerbt. Die Eigenschaften sind: 1) ApplicationContext.User.IsInRole (...) - Die Methode ist Teil von IPrincipal. 2) ApplicationContext.User.Identity.Name - Der Name ist die Eigenschaft von IIdentity, die Teil von ApplicationUser aka IPricipal ist
Beispiel für meinen Test (mit RhinoMock):
public void BeforeTest()
{
mocks = new MockRepository();
IPrincipal mockPrincipal = mocks.CreateMock<IPrincipal>();
ApplicationContext.User = mockPrincipal;
using (mocks.Record()) {
Expect.Call(mockPrincipal.IsInRole(Roles.ROLE_MAN_PERSON)).Return(true);
Expect.Call(mockPrincipal.Identity.Name).Return("ju"); //doesn't work!!!! return null ref exc
}
}
Ich habe ein kleines Problem mit dem zweiten Wert, dem Identitätsnamen. Ich habe versucht, es zu verspotten, habe aber Probleme damit, ApplicationUser eine verspottete Identität zuzuweisen, da dies intern erfolgt. Mir wurde gesagt, ich solle nur einen IIPrincipal (einschließlich IIdentity) selbst erstellen und mich überhaupt nicht darüber lustig machen. Welches kann sicher getan werden. Nicht sicher, ob dies als Stub mit aufgerufen werden kann?
Können Sie mir also raten, wie ich mit IPrincipal und IIdentity umgehen soll? Jeder Vorschlag herzlich willkommen.