Теперь, для раскрытия информации, мне еще предстоит испачкать руки большинством вещей, с которыми вы работаете, однако:
Если вы хотите издеваться над IsAuthenticated, почему бы просто не создать статический класс для возврата bool, которым может манипулировать ваш тестовый код?
Это немного грубо по краям, но, надеюсь, вы поняли:
interface IAuthenticationChecker
{
bool IsAuthenticated { get; }
}
public class MockAuthenticationChecker : IAuthenticationChecker
{
static bool _authenticated = false;
public static void SetAuthenticated(bool value)
{
_authenticated = value;
}
#region IAuthenticationChecker Members
public bool IsAuthenticated
{
get { return _authenticated; }
}
#endregion
}
public class RequestAuthenticationChecker : IAuthenticationChecker
{
#region IAuthenticationChecker Members
public bool IsAuthenticated
{
get {
if (HttpContext.Current == null)
throw new ApplicationException(
"Unable to Retrieve IsAuthenticated for Request becuse there is no current HttpContext.");
return HttpContext.Current.Request.IsAuthenticated;
}
}
#endregion
}
Затем вы можете использовать ссылку на любой из них на уровне приложения, да, это означает, что вам нужно добавить ссылку на уровне приложения, и вам нужно использовать другую ссылку, а не Запрос, но вы также получаете полный контроль над аутентификацией для тестирование:)
К вашему сведению - это полностью открыто для того, чтобы быть разорванным на части, я бросил это вместе примерно через минуту:)