Raj*_*rai 2 c# asp.net-mvc unit-testing mocking viewengine
我试图单元测试一个具有controllercontext参数的void方法,还有一些用于发送电子邮件.电子邮件模板使用视图引擎渲染局部视图 我模拟了controllercontext.因此,渲染视图会抛出异常,因为ControllerContext具有null值.
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;
}
Run Code Online (Sandbox Code Playgroud)
您只需要在Nuget Package Manager中的测试解决方案中安装Microsoft.Asp.Net.WebPages并尝试构建您的解决方案,然后您的单元测试就能正常运行.
| 归档时间: |
|
| 查看次数: |
1757 次 |
| 最近记录: |