public async Task FailingToFindViewThrowsException() { //Arrange var mockView = new Mock <IView>(); mockView.Setup(x => x.RenderAsync(It.IsAny <ViewContext>())).Callback <ViewContext>(v => v.Writer.Write("Some HTML")); var mockViewEngine = new Mock <ICompositeViewEngine>(); mockViewEngine.Setup(e => e.GetView(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>())) .Returns(ViewEngineResult.NotFound("SomeView", new List <string> { })); var context = new ControllerContext(new ActionContext(Mock.Of <HttpContext>(), new RouteData { }, new ControllerActionDescriptor { })); var mockController = new Mock <Controller>(); mockController.Object.ControllerContext = context; mockController.Object.TempData = Mock.Of <ITempDataDictionary>(); //Act + Assert var viewRenderer = new ViewRenderer(Mock.Of <ILogger <ViewRenderer> >(), mockViewEngine.Object, Mock.Of <IHostEnvironment>()); await Should.ThrowAsync <Exception>(() => viewRenderer.RenderViewAsync(mockController.Object, "~/AMockedView.cshtml", Mock.Of <Item>(), false)); }
public async Task RendersViewToString() { //Arrange var ExpectedHTML = "Test"; var mockView = new Mock <IView>(); mockView.Setup(x => x.RenderAsync(It.IsAny <ViewContext>())).Callback <ViewContext>(v => v.Writer.Write(ExpectedHTML)); var mockViewEngine = new Mock <ICompositeViewEngine>(); mockViewEngine.Setup(e => e.GetView(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>())) .Returns(ViewEngineResult.Found("SomeView", mockView.Object)); var context = new ControllerContext(new ActionContext(Mock.Of <HttpContext>(), new RouteData { }, new ControllerActionDescriptor { })); var mockController = new Mock <Controller>(); mockController.Object.ControllerContext = context; mockController.Object.TempData = Mock.Of <ITempDataDictionary>(); //Act var viewRenderer = new ViewRenderer(Mock.Of <ILogger <ViewRenderer> >(), mockViewEngine.Object, Mock.Of <IHostEnvironment>()); var result = await viewRenderer.RenderViewAsync(mockController.Object, "~/AMockedView.cshtml", Mock.Of <Item>(), false); //Assert result.ShouldBe(ExpectedHTML); }