Вы всегда можете обернуть FormsAuthentication.SignOut () в другой метод и заглушки / макеты.
Создание интерфейса IFormsAuthenticationWrap.
public interface IFormsAuthenticationWrap
{
void SignOut();
}
Создать класс переноса, который реализует IFormsAuthenticationWrap
public class FormsAuthenticationWrap : IFormsAuthenticationWrap
{
public void SignOut()
{
FormsAuthentication.SignOut();
}
}
Ваш вызывающий класс будет выглядеть примерно так:
public class LogOutClass
{
private readonly IFormsAuthenticationWrap _formsAuthentication;
public LogOutClass() : this (new FormsAuthenticationWrap())
{
}
public LogOutClass(IFormsAuthenticationWrap formsAuthentication)
{
_formsAuthentication = formsAuthentication;
}
public void LogOutMethod()
{
// Code before SignOut
_formsAuthentication.SignOut();
// Code after SignOut
}
}
Теперь перейдем к нашему тесту. Вы можете заглушить / издеваться с Moq, но я собираюсь показать здесь, как вы можете сделать это вручную.
Создайте свой класс заглушки / макета:
public class FormsAuthenticationStub : IFormsAuthenticationWrap
{
public void SignOut()
{
}
}
И последний напишите тест:
[TestMethod]
public void TestLogOutMethod()
{
var logOutClass = new LogOutClass(new FormsAuthenticationStub());
logOutClass.LogOutMethod();
}