开始进行单元测试可能会令人沮丧,陷入每个细节。希望随着我获得更多经验而有所改善。
现在,如何模拟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
上调用Page方法。我现在该怎么办?
我很想跳过像这样的小型挫折测试,但是我认为在初次学习时保持精力旺盛很重要。
答案 0 :(得分:-1)
如果您仍然想测试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;