首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何对MVC UserViewControl进行单元测试?

如何对MVC UserViewControl进行单元测试?
EN

Stack Overflow用户
提问于 2008-10-23 02:03:44
回答 6查看 2.1K关注 0票数 7

我已经尝试了一段时间,想用ASP.NET MVC为UserViewControl编写一个单元测试。我想看一下类似下面这样的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[TestMethod]
public void HaveControlToDisplayThings()
{
    var listControl = new ControlUnderTest();
    var viewData = new ViewDataDictionary<IList<string>>(this.repo.GetMeSomeData());

    // Set up a ViewContext using Moq.
    listControl.SetFakeViewContext(viewData);
    listControl.ViewData = viewData;
    listControl.RenderView(listControl.ViewContext);

    // Never got this far, no idea if this will work :)
    string s = listControl.ViewContext.HttpContext.Response.Output.ToString();
    Assert.AreNotEqual(0, s.Length);
    foreach (var item in this.repo.GetMeSomeData())
    {
        Assert.IsTrue(s.IndexOf(item) != -1);
    }
}

不幸的是,无论我怎么尝试,都会收到来自RenderView内部的错误。这是(据我所知)静态HttpContext.Current对象无用造成的--我从System.Web.UI.Page.SetIntrinsics获取NullReferenceExceptions。

我尝试使用Phil Haack的HttpSimulator,它给了我一个HttpContext对象,但我发现我还需要指定一个伪HttpBrowserCapabilities对象才能更进一步:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Subtext.TestLibrary.HttpSimulator simulator = new HttpSimulator();
simulator.SimulateRequest();
var browserMock = new Mock<HttpBrowserCapabilities>();
browserMock.Expect(b => b.PreferredRenderingMime).Returns("text/html");
browserMock.Expect(b => b.PreferredResponseEncoding).Returns("UTF-8");
browserMock.Expect(b => b.PreferredRequestEncoding).Returns("UTF-8");
HttpContext.Current.Request.Browser = browserMock.Object;

现在,我在该对象的属性访问上得到了异常。我尽我所能地嘲笑了许多人,但似乎毫无进展。

有没有人能做到这一点?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-12-23 15:37:09

不幸的是,ASP.NET视图引擎在ASP.NET托管环境中使用VirtualPathProvider。更糟糕的是,我使用Reflector跟踪了一些其他代码,发现对VirtualPath实用程序的一些硬代码引用还有其他依赖关系。我希望他们在发行版中修复这个问题,这样我们就可以真正测试我们的视图以及它们是如何呈现的。

票数 3
EN

Stack Overflow用户

发布于 2008-12-23 15:27:10

一种选择是在浏览器中运行单元测试。在这种情况下,我已经成功地使用了Selenium

票数 2
EN

Stack Overflow用户

发布于 2008-12-23 15:34:33

我们放弃了单元测试视图,现在正在使用WatiN浏览器测试作为我们构建的一部分。

我们还使用Resharper Solution Wide Analysis来检查是否存在编译器错误。不是完美的,但它得到了非常相似的结果。缺点- WatiN测试很慢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/229185

复制
相关文章
如何对Spring MVC中的Controller进行单元测试
对Controller进行单元测试是Spring框架原生就支持的能力,它可以模拟HTTP客户端发起对服务地址的请求,可以不用借助于诸如Postman这样的外部工具就能完成对接口的测试。 具体来讲,是由Spring框架中的spring-test模块提供的实现,详见MockMvc。
编程随笔
2022/04/29
2.3K0
用MockMvc对Spring mvc中的controller层进行单元测试
参考:http://sishuok.com/forum/posts/list/7981.html  ;  http://www.tuicool.com/articles/6nqeIbm
克虏伯
2019/04/15
2.6K0
如何对机器学习代码进行单元测试?
本文介绍了一种用于机器学习代码的单元测试方法,通过生成数据输入、模型推理、损失计算和优化等步骤,来确保每个组件只在一个步骤中起作用。作者还提供了相应的测试用例和代码示例,以帮助读者更好地理解单元测试的实现过程。同时,作者也提醒读者,单元测试并非万能的,需要结合其他测试方法来全面评估机器学习代码的性能和正确性。
企鹅号小编
2018/01/09
2.5K0
如何对机器学习代码进行单元测试?
如何对 Jenkins 共享库进行单元测试
Jenkins 共享库是除了 Jenkins 插件外,另一种扩展 Jenkins 流水线的技术。通过它,可以轻松地自定义步骤,还可以对现有的流水线逻辑进行一定程度的抽象与封装。至于如何写及如何使用它,读者朋友可以移步附录中的官方文档。
LinuxSuRen
2019/05/29
2.2K0
如何对类中的protected方法进行单元测试
也许很多同学写单元测试时遇到这样的问题,一个类方法是 protected ,如何测呢 ? 当然,你可以说把 protected 改成 public 就可测了!没错,是可测了,可是 ......
跑马溜溜的球
2020/12/07
4K0
对 React 组件进行单元测试
前端开发的一个特点是更多的会涉及用户界面,当开发规模达到一定程度时,几乎注定了其复杂度会成倍的增长。
江米小枣
2020/06/16
4.3K0
[译] 对 Vue-Router 进行单元测试
原文:https://medium.com/js-dojo/unit-testing-vue-router-1d091241312
江米小枣
2020/06/15
2.2K0
如何在单元测试中对写数据库进行测试?
转账是银行等金融系统中常见的一个场景。在在最近的一个针对转账服务的单元测试中,笔者就遇到了上述问题。一个极端简化的转账申请如下图:
Antony
2020/12/01
3.8K0
如何在单元测试中对写数据库进行测试?
使用Sentinel对Spring MVC接口进行限流
Spring Cloud Alibaba提供了中间件Sentinel,它以流量为切入点,提供了流量控制、熔断降级、系统负载保护等多个功能来保护服务的稳定性。今天就来尝试一下。
码农小胖哥
2020/10/10
2K0
使用Sentinel对Spring MVC接口进行限流
ASP.NET Core 对Controller进行单元测试
单元测试对我们的代码质量非常重要。很多同学都会对业务逻辑或者工具方法写测试用例,但是往往忽略了对Controller层写单元测试。我所在的公司没见过一个对Controller写过测试的。今天来演示下如果对Controller进行单元测试。以下内容默认您对单元测试有所了解,比如如何mock一个接口。在这里多叨叨一句,面向接口的好处,除了能够快速的替换实现类(其实大部分接口不会有多个实现),最大的好处就是可以进行mock,可以进行单元测试。
MJ.Zhou
2020/06/23
2K0
如何使用MOQ进行单元测试
使用MOQ来伪装和隔离被依赖对象,从而提高被测对象的测试效果。 安装 通过http://code.google.com/p/moq可以下载MOQ的最新版本。在SSL项目中,我们使用的是MOQ 3.1.416.3版本。在SCM中项目目录下的Lib目录下有该工具的二进制版本。直接在单元测试项目中引用即可。 准备工作 如果你需要测试项目中的Internal成员,你需要在AssemblyInfo.cs中添加如下的Attribute: #if DEBUG [assembly: InternalsVisibleTo("
葡萄城控件
2018/01/10
3.5K0
如何使用Python进行单元测试
在我的日常工作中,我是一名专业程序员。我使用c++、c#和Javascript。我是一个开发团队的一员,他们使用单元测试来验证我们的代码是否按照它应该的方式工作。
HuangWeiAI
2021/04/21
2.8K0
如何使用Python进行单元测试
对 WordPress 主题进行单元测试(Theme Unit Test)
在制作 WordPress 的过程中,除了对整体的结构等进行排版布局等,还必须要对正文的内容和其他地方进行修饰和排版,例如正文中可能出现的 标题(h2、h3)、列表(ul、ol)、表格(table) 以及不同的文章类型效果等等。这就是 WordPress 主题的单元测试(Theme Unit Test)。
Denis
2023/04/15
1.9K0
Eclipse如何添加JUnit进行单元测试?
也许你会觉得奇怪,这难道还需要写一篇博客吗?我也不知道,但是随着Eclipse的进步,有些东西弄得确实和以前不一样,让人真的昨摸不透!!
顾翔
2021/04/26
1.2K0
Eclipse如何添加JUnit进行单元测试?
点击加载更多

相似问题

如何对会话MVC进行单元测试

12

如何对MVC类进行单元测试?

32

使用MVC模式对Winforms进行单元测试?

33

如何在MVC中对Create方法进行单元测试?

10

如何对ASP.NET MVC视图进行单元测试?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文