Simulación de identidad y de principio
Solo quiero preguntar cuál sería el mejor enfoque para suministrar estos objetos en mis pruebas de unidad.
En mi prueba de unidad estoy probando el objeto CSLA. El objeto CSLA está utilizando internamente una propiedad y un método del objeto ApplicationUser. ApplicationUser se hereda de IPrincipal. Las propiedades son: 1) ApplicationContext.User.IsInRole (...) - el método es parte de IPrincipal 2) ApplicationContext.User.Identity.Name - el nombre es propiedad de IIdentity que es parte de ApplicationUser aka IPricipal
Ejemplo de mi prueba (usando 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
}
}
Tengo un pequeño problema con el segundo valor, el nombre de identidad. Intenté burlarme, pero tengo problemas para asignar la identidad simulada a ApplicationUser, ya que se realiza internamente. Me pidieron que creara solo un IIPrincipal (incluida la identidad) y que no me burlara en absoluto. Lo que se puede hacer con seguridad. ¿No está seguro si esto puede ser llamado como Stub usando?
Entonces, ¿me pueden aconsejar cómo tratar con IPrincipal y Identity? Cualquier sugerencia muy bienvenida.