Я пытаюсь написать модульный тест для моего одного контроллера, чтобы убедиться, что представление было возвращено правильно, но у этого контроллера есть базовый контроллер, который обращается к HttpContext.Current.Session. Каждый раз, когда я создаю новый экземпляр моего контроллера, он вызывает конструктор basecontroller, и тест завершается неудачей с исключением нулевого указателя в HttpContext.Current.Session. Вот код:
public class BaseController : Controller
{
protected BaseController()
{
ViewData["UserID"] = HttpContext.Current.Session["UserID"];
}
}
public class IndexController : BaseController
{
public ActionResult Index()
{
return View("Index.aspx");
}
}
[TestMethod]
public void Retrieve_IndexTest()
{
// Arrange
const string expectedViewName = "Index";
IndexController controller = new IndexController();
// Act
var result = controller.Index() as ViewResult;
// Assert
Assert.IsNotNull(result, "Should have returned a ViewResult");
Assert.AreEqual(expectedViewName, result.ViewName, "View name should have been {0}", expectedViewName);
}
Есть ли какие-либо идеи о том, как смоделировать (используя Moq) сеанс, к которому осуществляется доступ в базовом контроллере, чтобы выполнить тест в контроллере-потомке?