Ответ 1
Я бы начал с написания интерфейса и класса-оболочки, который будет инкапсулировать эту логику, а затем использовать интерфейс в моем контроллере:
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
можно легко высмеять в unit test и убедиться, что контроллер вызывает на нем ожидаемые методы. Я бы не стал unit test классом FormsAuthWrapper
, потому что он просто делегирует вызов FormsAuthentication
, который выполняет то, что он должен делать (гарантия Microsoft: -)).