Ich möchte nur fragen, was wäre besser Ansatz, um diese Objekte in meinem Unit-Tests liefern.
In meinem Unit-Test teste ich das 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 eine Eigenschaft von IIdentity, die Teil von ApplicationUser alias 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 spiegeln, habe aber Probleme, die gespiegelte IIdentity dem ApplicationUser zuzuordnen, da dies intern geschieht. Mir wurde gesagt, ich solle einfach ein IIPrincipal (einschließlich IIdentity) selbst erstellen und es überhaupt nicht spiegeln. Das kann man sicher machen. Nicht sicher, ob dies als Stub mit aufgerufen werden kann?
Können Sie mich also beraten, wie ich mit IPrincipal und IIdentity umgehen soll? Jeder Vorschlag ist herzlich willkommen.