Ложный IIdentity и IPrincipal
Я просто хочу спросить, как лучше подходить к поставке этих объектов в моих модульных тестах.
В моем модульном тесте я тестирую объект CSLA. Объект CSLA внутренне использует одно свойство и один метод объекта ApplicationUser. ApplicationUser наследуется от IPrincipal. Свойства: 1) ApplicationContext.User.IsInRole (...) - метод является частью IPrincipal 2) ApplicationContext.User.Identity.Name - имя является свойством IIdentity, которое является частью ApplicationUser aka IPricipal.
Пример моего теста (с использованием 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
}
}
У меня небольшая проблема со вторым значением, именем личности. Я пытался имитировать его, но у меня возникла проблема с тем, чтобы назначить макет IIdentity для ApplicationUser, как это делается внутренне. Мне сказали просто создать какой-то IIPrincipal (в том числе IIdentity) самостоятельно, а не издеваться над ним вообще. Что можно сделать наверняка. Не уверен, что это можно назвать Stub с помощью?
Так что вы можете посоветовать мне, как бороться с IPrincipal и IIdentity? Любое предложение приветствуется.