2017-01-03 83 views
1

我想单元测试一个具有controllercontext参数的无效方法以及一些发送电子邮件的方法。电子邮件模板使用视图引擎渲染部分视图我嘲笑controllercontext。所以渲染视图抛出一个异常,因为ControllerContext具有空值。'System.Web.Mvc.ViewEngines'的类型初始值设定项引发了一个异常

public static string RenderViewToString(ControllerContext context, string viewPath, object model, bool partial = false) 
     { 
      var viewEngineResult = partial ? ViewEngines.Engines.FindPartialView(context, viewPath) : ViewEngines.Engines.FindView(context, viewPath, null); 

      if (viewEngineResult == null) 
       throw new FileNotFoundException("View cannot be found."); 

      var view = viewEngineResult.View; 
      context.Controller.ViewData.Model = model; 

      var result = String.Empty; 

      using (var sw = new StringWriter()) 
      { 
       var ctx = new ViewContext(context, view, 
              context.Controller.ViewData, 
              context.Controller.TempData, 
              sw); 
       view.Render(ctx, sw); 
       result = sw.ToString(); 
      } 

      return result; 
     } 
+1

请张贴一些代码 – NicoRiff

+1

没有人可以帮助你,如果你不提供你的代码。 – Sefe

+0

@NicoRiff有我的代码 –

回答

1

我不认为错误是与您的代码。我认为这是与你的测试项目没有所有的依赖,在包mananger,与测试项目设置为默认项目INTAL

PM>安装,包装Microsoft.AspNet.WebPages

我忘了每次我在一个MVC项目上进行测试时都会添加这个。

4

您只需要从Nuget Package Manager的测试解决方案中安装Microsoft.Asp.Net.WebPages,然后尝试构建解决方案,然后单元测试将正常工作。

enter image description here

相关问题