Мы пытаемся смоделировать HttpContext приложения MVC 3, используя RhinoMocks. Выглядит так:
HttpContextBase context = mocks.StrictMock<HttpContextBase>();
HttpRequestBase request = mocks.PartialMock<HttpRequestBase>();
IPrincipal user = mocks.StrictMock<IPrincipal>();
HttpCookieCollection cookies = new HttpCookieCollection();
IIdentity identity = mocks.StrictMock<IIdentity>();
HttpResponseBase response = mocks.PartialMock<HttpResponseBase>();
SetupResult.For(response.Cookies).Return(cookies);
SetupResult.For(context.User).Return(user);
SetupResult.For(user.Identity).Return(identity);
SetupResult.For(context.Request).Return(request);
SetupResult.For(context.Response).Return(response);
mocks.Replay(context);
В моем тесте мне нужно, чтобы пользователь прошел аутентификацию, поэтому я добавил следующее:
var identity = context.User.Identity;
mocks.BackToRecord(identity);
SetupResult.For(identity.IsAuthenticated).Return(true).Repeat.Any();
mocks.Replay(identity);
Это, однако, приводит к «Результат для IIdentity.get_IsAuthenticated (); уже настроен».исключение будет брошено.
Почему?Что мне нужно сделать, чтобы установить аутентификацию в моих тестах?