Это абсолютно возможно.Вы должны взглянуть на реализацию шаблона MVP с ASP.NET Webforms.Существует несколько реализаций с открытым исходным кодом, но вы можете сделать небольшую специализированную по своему усмотрению.
Основа состоит в том, чтобы переместить ваш код за логику в класс презентатора.Класс Presenter имеет ссылку на страницу, реализующую интерфейс.Хитрость в вашем случае заключается в том, чтобы макетировать объект Page.Response для вашего теста.Вот почему это трудно для модульного тестирования это правильно.Свойство PageResponse содержит объект, производный от HttpResponseBase, и это базовый класс, который вы должны смоделировать в своих тестах и выполнить свои утверждения на своем примере.Вы можете начать с этого, а затем расширить возможности своего докладчика, например Session, Request и т. Д.
Если у вас вообще нет разметки, возможно, вы просто создадите докладчика в конструкторе представления и не будете беспокоитьсяиметь и ссылаться на мнение.
Чтобы уточнить: большая хитрость заключается в том, чтобы получить код из файла aspx.cs.Этот зверь не подлежит тестированию.
Пример базового класса для докладчиков:
public class Presenter<T> where T : class, IView
{
protected readonly T View;
protected Presenter(T view, ILogger logger)
{
View = view;
}
public virtual void page_PreRender(object sender, EventArgs e)
{
}
public virtual void page_Init(object sender, EventArgs e)
{
}
public virtual void page_Load(object sender, EventArgs eventArgs)
{
}
public HttpContextBase HttpContext { protected get; set; }
protected HttpRequestBase Request
{
get { return HttpContext.Request; }
}
}