Mock IIdentity e IPrincipal
Eu só quero perguntar qual seria a melhor abordagem para fornecer esses objetos em meus testes de unidade.
No meu teste de unidade, estou testando o objeto CSLA. O objeto CSLA está internamente usando uma propriedade e um método do objeto ApplicationUser. ApplicationUser é herdado do IPrincipal. As propriedades são: 1) ApplicationContext.User.IsInRole (...) - o método faz parte do IPrincipal 2) ApplicationContext.User.Identity.Name - o nome é propriedade de IIdentity que faz parte do ApplicationUser aka IPricipal
Exemplo do meu teste (usando o 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
}
}
Eu tenho um pequeno problema com o segundo valor, o nome da identidade. Eu tentei zombar dele, mas tenho problema para atribuir IIdentity zombado para ApplicationUser, como é feito internamente. Foi-me dito para criar apenas um IIPrincipal (incluindo o IIdentity) sozinho e não zombar dele. O que pode ser feito com certeza. Não tenho certeza se isso pode ser chamado como Stub usando?
Então você pode me aconselhar sobre como lidar com IPrincipal e IIdentity? Qualquer sugestão mais bem-vinda.