Я хочу проверить действие в контроллере, использующее controlContext в качестве параметра для создания pdf-документа на основе библиотеки 3-й части «Rotativa».
Вот реализация действия (функции):Как издеваться над DisplayMode в ControllerContext для модульного тестирования C#
public ActionResult DetailsPrint(int? id)
{
var a = new ViewAsPdf();
a.ViewName = "../Ops/_2A1/Details";
a.Model =UnitOfWork._2A1s.Get(id.Value);
var pdfBytes = a.BuildPdf(ControllerContext);
// return ActionResult
MemoryStream ms = new MemoryStream(pdfBytes);
return new FileStreamResult(ms, "application/pdf");
}
А вот как я пытаюсь получить модульное тестирование работы:
Constructor
public _2A1ControllerTest() { _mockRepository = new Mock<I2A1Repository>(); var mockUoW = new Mock<IUnitOfWork>(); _mockHttpContext = new Mock<HttpContextBase>(); _mockRequest = new Mock<HttpRequestBase>(); _mockDisplayModeContext = new Mock<IDisplayMode>(); mockUoW.SetupGet(u => u._2A1s).Returns(_mockRepository.Object); _mockHttpContext.SetupGet(x => x.Request).Returns(_mockRequest.Object); _controller = new _2A1Controller(mockUoW.Object); _controller.MockCurrentUser("test.admin"); _controller.ControllerContext = new ControllerContext(_mockHttpContext.Object, new System.Web.Routing.RouteData(), _controller); }
Контрольная функция
[TestMethod] public void DetailsPrint_shouldPrint() { var result = _controller.DetailsPrint(1) as ActionResult; result.Should().BeOfType<ActionResult>(); }
Имя теста: DetailsPrint_shouldPrint Тест FullName: OPSReviewTest._2A1ControllerTest.DetailsPrint_shouldPrint Test Источник: C: \ Inetpub \ Wwwroot \ OpsReview \ OPSReviewTest \ Контроллеры \ Api_2A1ControllerTest.cs: линия 46 Тест Результат: Failed Test Продолжительность: 0: 04: 39,3039007 Результат StackTrace:
в System.Web.WebPages.Display ModeProvider.GetDisplayMode (HttpContextBase контекст) в System.Web.Mvc.ControllerContext.get_DisplayMode() Результат Сообщение: Метод испытания OPSReviewTest._2A1ControllerTest.DetailsPrint_shouldPrint бросили исключение: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта ,
Любая помощь или предложение, спасибо.
Что именно вы пытаетесь протестировать в методе? – Nkosi