专栏首页.NET开发那点事使用RazorEngine对ASP.NET MVC的Views进行UnitTest

使用RazorEngine对ASP.NET MVC的Views进行UnitTest

有的时候我们需要对Razor最后生产的文本(HTML OR XML OR..)进行单元测试。

使用Nuget安装RazorEngine。

新建一个ASP.NET MVC项目,并且带有测试项目。

修改Index.cshtml

@using TestRazor.Models
@model TestModel

<div>This is a test page</div>

<div>Name @Model.Name </div>
<div>Age @Model.Age</div>

  测试:

    [TestClass]
    public class HomeControllerTest
    {
        [TestMethod]
        public void Index()
        {
            var config = new TemplateServiceConfiguration();
            config.Debug = true;
            using (StreamReader sr = File.OpenText(@"E:\临时\TestRazor\TestRazor\Views\Home\Index.cshtml"))
            {
                var template = sr.ReadToEnd();
                using (var service = RazorEngineService.Create(config))
                {
                    var html = service.RunCompile(template, "test", null, new TestModel
                    {
                        Name = "kklldog",
                        Age = 10
                    });

                    Assert.IsTrue(html.Contains("This is a test page"));
                    Assert.IsTrue(html.Contains("Name kklldog"));
                    Assert.IsTrue(html.Contains("Age 10"));
                    Console.WriteLine(html);
                }
            }
        }


    }

  结果:

bingo!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序列表项滑动显示删除按钮

    微信小程序并没有提供列表控件,所以也没有iOS上惯用的列表项左滑删除的功能,SO只能自己干了。 原理很简单,用2个层,上面的层显示正常的内容,下面的层显示一个删...

    kklldog
  • 微信小程序列表项滑动显示删除按钮

    微信小程序并没有提供列表控件,所以也没有iOS上惯用的列表项左滑删除的功能,SO只能自己干了。

    kklldog
  • AServer - 基于Asp.net core Kestrel的超迷你http服务器

      AServer是基于ASP.NET Core Kestrel封装的一个超迷你http服务器。它可以集成进你的Core程序里,用来快速的响应Http请求,而不...

    kklldog
  • 第33天:封装自己的class类

    半指温柔乐
  • 微服务 —— 你需要付出什么?又能有何收获?

    如果您阅读过我的文章 —— 微服务中的语义扩散,您可能会识得此标题。本文是那篇文章的一个延续,其目的是强调,只有当我们付出足够的努力来处理我们将要面对的组织和分...

    StoneDemo
  • WebGL,真正进入三维的世界

    WebGL真正强大的地方,在于它为我们提供了三维图像的绘制能力。当然这主要的得益于WebGL的计算速度,要知道,绘制三维图形,我们需要进行大量的(逐顶点甚至是逐...

    周明礼
  • 【编程基础】可执行程序各个数据段

    进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相...

    程序员互动联盟
  • <sub>标签

    The coordinate of the ith point is (xi, yi). For example, the 10th point has co...

    Html5知典
  • 【小家java】Spring事务不生效的原因大解读

    事务在后端开发中无处不在,是数据一致性的最基本保证。在Spring中可以通过对方法进行事务的配置,而不是像原来通过手动写代码的方式实现事务的操作,这在很大程度上...

    YourBatman
  • Linux下gdb的安装及使用入门

    用root权限的Terminal(或一般权限的Terminal)的vi编辑器编写一个C程序a.c:

    黑泽君

扫码关注云+社区

领取腾讯云代金券