c# - 使用 .Net Core 2 和 Moq,如何设置 HTTP 上下文来伪造身份验证?
问题描述
我正在使用 Moq 在我的 .net core 2 应用程序中进行自动化测试。我们使用不记名身份验证,并且需要能够从 HttpContext 对象中提取名称以确保我们拥有正确的用户:
var userName = HttpContext.User.Identity.Name;
我找到了大量使用 System.Web 的示例,但没有一个可以让我模拟 Core 2 设置。
解决方案
您无需模拟任何东西并使用框架提供的现有类即可实现相同的目标。
public class ContextHelper {
public static HttpContext GetHttpContext(string name = "validemail@test.com") {
var identity = new GenericIdentity(name, "test");
var contextUser = new ClaimsPrincipal(identity);
var httpContext = new DefaultHttpContext() {
User = contextUser
};
return httpContext;
}
}
仅仅因为我们有能力嘲笑某些事情并不意味着我们必须在大多数时候嘲笑。
推荐阅读
- time-complexity - 特定方法的大 O 表示法
- javascript - 将数据从 nodejs/express 传递到前端 js
- python - 使用 python pandas 删除 2 个不同文件中的重复行
- jquery - neo4j:jQuery 没有在 apoc.load.html 上返回预期结果
- datatable - 数据表 - 根据单元格值禁用表格内的按钮
- python - Python youtube-dl 可以得到合并文件的扩展名吗?
- c# - 如何在 CUA 环境中通过 BAPI 重置密码?
- c - 函数表 C 语法
- r-exams - 在不扫描的情况下评估笔试
- php - 路线不适用于半路径 - laravel