当前位置: 首页 > news >正文

滨州市网站建设_网站建设公司_VS Code_seo优化

甘家口网站建设,住房和建设部网站首页,在线制作表白网站的源码,咸阳学校网站建设哪家专业点击上方蓝字关注“汪宇杰博客”导语在 ASP.NET Core 中#xff0c;当你在 UrlHelperExtensions 类上使用扩展方法时#xff0c;很难在单元测试中编写Mock。因为Moq框架不支持模拟扩展方法。问题例如#xff0c;我的博客代码中使用了 Url.Page() 方法#xff1a;var callba… 点击上方蓝字关注“汪宇杰博客”导语在 ASP.NET Core 中当你在 UrlHelperExtensions 类上使用扩展方法时很难在单元测试中编写Mock。因为Moq框架不支持模拟扩展方法。问题例如我的博客代码中使用了 Url.Page() 方法var callbackUrl Url.Page(/Index, null, null, Request.Scheme);但是单元测试中像这样 Mock 就会爆var mockUrlHelper new MockIUrlHelper(MockBehavior.Strict);mockUrlHelper.Setup(x x.Page(/Index, null, null, It.IsAnystring())).Returns(callbackUrl).Verifiable();爆炸现场System.NotSupportedException : Unsupported expression: x x.Page(/Index, null, null, It.IsAnystring())    Extension methods (here: UrlHelperExtensions.Page) may not be used in setup / verification expressions.解决方法我们需要 Mock 这个拓展方法调用的底层方法。在本案例中底层方法是Microsoft.AspNetCore.Mvc.IUrlHelper.RouteUrl(UrlRouteContext routeContext)我是怎么知道的呢很简单.NET 都已经开源多少年了直接看一眼源代码就能知道微软如何单元测试 UrlHelperExtensions。https://source.dot.net/ 从微软的代码里复制两个助手方法private MockIUrlHelper CreateMockUrlHelper(ActionContext context null){    context ?? GetActionContextForPage(/Page);    var urlHelper _mockRepository.CreateIUrlHelper();    urlHelper.SetupGet(h h.ActionContext)        .Returns(context);    return urlHelper;}private static ActionContext GetActionContextForPage(string page){    return new()    {        ActionDescriptor new()        {            RouteValues new Dictionarystring, string            {                { page, page },            }        },        RouteData new()        {            Values             {                [ page ] page            }        }    };}修改我们的单元测试var mockUrlHelper CreateMockUrlHelper();mockUrlHelper.Setup(h h.RouteUrl(It.IsAnyUrlRouteContext())).Returns(callbackUrl);现在单元测试就能顺利跑过了完整的单元测试代码见下方供参考[Test]public async Task SignOutAAD(){    _mockOptions.Setup(m m.Value).Returns(new AuthenticationSettings    {        Provider AuthenticationProvider.AzureAD    });    var mockUrlHelper CreateMockUrlHelper();    mockUrlHelper.Setup(h h.RouteUrl(It.IsAnyUrlRouteContext()))        .Returns(callbackUrl);    var ctx new DefaultHttpContext();    var ctl CreateAuthController();    ctl.ControllerContext new() { HttpContext ctx };    ctl.Url mockUrlHelper.Object;    var result await ctl.SignOut();    Assert.IsInstanceOf(typeof(SignOutResult), result);}汪宇杰博客Azure | .NET | 微软 MVP无广告不卖课做纯粹的技术公众号
http://www.ihoyoo.com/news/78975.html

相关文章:

  • 网站方案报价wordpress注册登录修改密码
  • 企业网站的特征宁波提高网站排名
  • 网站推广办法价格信息网
  • 一站多通怎么做网站昆明 网站搭建
  • 哪个公司做外贸网站好亚马逊跨境电商开店赚钱吗
  • 黄骅市网站建设怎么免费自己做推广
  • 手游发号网站模板月子中心网站建设需求
  • dedecms织梦搬家公司网站模板群晖 wordpress 外网
  • 如何在各个购物网站之间做差价烟台网站制作公司在线咨询
  • 礼县建设局网站网站建设优化服务
  • 网站推广优化技巧大全做知乎网站社区要多少钱
  • 太仓住房城乡建设网站扬州做网站需要多少钱
  • 北京网站开发设计网业浏览设置在哪
  • 深圳建设局官网站首页电子商务有限公司怎么注册
  • 网站流量图怎么做青岛网站建设工作室
  • 网站构建免费陕西省建设网官网
  • 公司网站建设汇报淘宝上可以做网站吗
  • 哪里网站建设公司比较好湛江市住房建设局网站
  • 大型网站的技术架构问题程序员的就业前景
  • 郑州网站seo技术设计师如何做自己的个人网站
  • 机械设备公司网站制作详情页的五个基本模块
  • 男女做暧视频网站免费建设游戏网站需要什么设备
  • 网站建网站建设设问答网站开发
  • 查网站有没有做推广网站如何建设推广
  • 上海网站的优化公司wordpress 获取参数
  • 徐州网站建设找哪家好厦门seo培训
  • 濮阳创建网站公司做网站 图片 文件夹 放哪儿
  • 网站空间在哪买好wordpress首页幻灯片插件
  • 北京网站建设咸宁做漫画视频在线观看网站
  • 请人建设网站 要注意什么杭州微信网站建设