Я бы начал с написания интерфейса и класса-оболочки, который инкапсулирует эту логику, а затем использовал бы интерфейс в моем контроллере:
public interface IAuth
{
void DoAuth(string userName, bool remember);
}
public class FormsAuthWrapper : IAuth
{
public void DoAuth(string userName, bool remember)
{
FormsAuthentication.SetAuthCookie(userName, remember);
}
}
public class MyController : Controller
{
private readonly IAuth _auth;
public MyController(IAuth auth)
{
_auth = auth;
}
}
Теперь IAuth
можно легко смоделировать в модульном тесте и убедиться, что контроллер вызывает для него ожидаемые методы. Я НЕ стал бы модульно тестировать класс FormsAuthWrapper
, поскольку он просто делегирует вызов FormsAuthentication
, который делает то, что должен (Microsoft гарантирует: -)).