.net - 如何让我的单元测试绕过我的 .NET Web 控制器上的 Authorize 标记
问题描述
我在 .NET 4.6.1 中有一个 Web API,我的控制器受 Azure B2C 保护。因此,它们具有 [Authorize] 标签。
我写了一个单元测试来确保我可以成功并测试一些业务逻辑。但是,我无法弄清楚如何绕过 [Authorize] 标记,并且我不想为每个运行的单元测试授权 B2C。
我假设模拟控制器上下文将是一个好的开始,但我无法弄清楚语法。
有几篇关于模拟 ControllerContext 然后设置的文章,HttpContext.Request.IsAuthenticated
但这适用于 MVC。
从 转换为System.Web.MVC.ControllerContext
时出现错误System.Web.Http.Controllers.HttpControllerContext
。
无法隐式转换类型错误:
我希望有人可以帮助我弄清楚如何绕过[Authorize]
标签进行单元测试?
解决方案
看起来你的文件中有不同的用途,所以你的模拟是
Mock<System.Web.Mvc.ControllerContext>
而不是一个
Mock<System.Web.Http.Controllers.HttpControllerContext>
如果您指定命名空间,则可以解决该问题。
然而,我会拆分测试,将您的业务逻辑从授权控制器移动到它自己的类中,您可以更轻松地进行测试。
而且我确信有一些方法可以测试您的路线。
推荐阅读
- java - Creating abbrevations for commonly used commands in Intellij Idea Terminal
- intellij-idea - Intellij 在 .class 文件中搜索 hybris 项目
- postgresql - `format()` 调用中的 `INTERVAL` 参数的格式是什么
- php - PHP8 + Oracle OCI8 => 致命错误:未捕获错误:调用未定义函数 oci_connect()
- xcode - xcodebuild 无法生成 xcactivilog
- python - 如何解决 PermissionError:[Errno13] 在 Ubuntu 18.04 apache2 服务器 Django 中使用 Python matplotlib.pyplot.savefig
- typescript - 如何使用 TypeScript + Composition API + Vuex(命名空间)?
- c# - C# API 返回 XML 响应
- grep - grep:提取前缀和后缀之间的内容
- java - 我在 intellij 的 javax.mail.MimeMessage 处收到 NoClassDefFoundError