c# - 如何模拟 IUrlHelper
问题描述
单元测试入门可能会令人沮丧,卡在每一个细节上。希望随着我获得更多经验,这种情况会有所改善。
现在,我如何模拟IUrlHelper
单元测试?
我有这个简单的方法来获取 ASP.NET 中的绝对路径
public static string AbsolutePage(this IUrlHelper url, string pageName, string pageHandler = null, object routeValues = null)
{
return url.Page(pageName, pageHandler, routeValues, url.ActionContext.HttpContext.Request.Scheme);
}
模拟方案很容易
return Mock.Of<IUrlHelper>(x =>
x.ActionContext.HttpContext.Request.Scheme == "http");
但随后该方法调用了IUrlHelper
. 现在我该怎么做?
我很想跳过像这样令人沮丧的小测试,但我认为在第一次学习时保持精力充沛很重要。
解决方案
如果您仍想测试您的IUrlHelper
,您可以使用此代码
var mocked = new Mock<IUrlHelper>();
mocked.Setup(x => x.Page(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<object>(), It.IsAny<string>()))
.Returns("whatever_string");
IUrlHelper helper = mocked.Object;
推荐阅读
- reactjs - h如何在react中操作数据
- python - matplotlib 中的渐变填充和颜色过渡
- uml - 如何在 UML 中表示作为多维数组的属性?
- python-3.x - Python 3 中不允许使用 urllib2 的方法
- php - Apache:错误 AH00557 和 AH00558 不会消失,PHP 无法正常工作
- c - 将结构指针初始化为空
- ajax - CodeIgniter 上的 ajax 403 错误
- python - IntelliJ Python intellisense 无法识别使用 add2virtualenv 添加到 virtualenvwrapper 的库
- c# - C# UWP“订阅值更改”
- python - Keras - 多输出模型的准确性不起作用