Dav*_*Dev 34 asp.net-mvc nunit unit-testing html-helper moq
有人可以告诉我如何使用Moq创建模拟HTML Helper吗?
该文章有一篇文章的链接自称为说明这一点,但仅之后返回一个ASP.NET运行时错误链接
[编辑] 我问有关同一主题的一个更具体的问题在这里,但目前还没有得到任何回应.我认为它太具体了,所以我想我可以得到一个更一般的问题的更一般的答案,并修改它以满足我的要求.
谢谢
Tho*_*mas 45
这是另一篇文章,向您展示如何实现相同的目标:
Run Code Online (Sandbox Code Playgroud)public static HtmlHelper CreateHtmlHelper(ViewDataDictionary vd) { var mockViewContext = new Mock<ViewContext>( new ControllerContext( new Mock<HttpContextBase>().Object, new RouteData(), new Mock<ControllerBase>().Object), new Mock<IView>().Object, vd, new TempDataDictionary()); var mockViewDataContainer = new Mock<IViewDataContainer>(); mockViewDataContainer.Setup(v => v.ViewData).Returns(vd); return new HtmlHelper(mockViewContext.Object, mockViewDataContainer.Object); }
Cod*_*gue 19
在MVC5中,a ViewContext有一个额外的构造函数参数TextWriter,因此Thomas的代码不再有效.我添加了一个内存中的TextWriter来解决这个问题:
public static HtmlHelper CreateHtmlHelper(ViewDataDictionary vd)
{
Mock<ViewContext> mockViewContext = new Mock<ViewContext>(
new ControllerContext(
new Mock<HttpContextBase>().Object,
new RouteData(),
new Mock<ControllerBase>().Object
),
new Mock<IView>().Object,
vd,
new TempDataDictionary(),
new StreamWriter(new MemoryStream())
);
Mock<IViewDataContainer> mockDataContainer = new Mock<IViewDataContainer>();
mockDataContainer.Setup(c => c.ViewData).Returns(vd);
return new HtmlHelper(mockViewContext.Object, mockDataContainer.Object);
}
Run Code Online (Sandbox Code Playgroud)
MrW*_*MrW 13
你能做的是:
HtmlHelper helper = null;
helper.YourHelperMethod();
Run Code Online (Sandbox Code Playgroud)
不需要嘲笑任何东西.对我来说很棒.
| 归档时间: |
|
| 查看次数: |
7556 次 |
| 最近记录: |