【发布时间】:2017-04-15 18:11:38
【问题描述】:
我正在尝试测试一种控制器方法,该方法利用 JWT 声明来获取客户端的用户名,如下所示:
[Authorize]
[Route("api/[controller]")]
public class ApprovalsController : Controller
{
// POST api/approvals
[HttpPost]
public IActionResult Post([FromBody]ApprovalViewModel value)
{
// ...
// Incoming approval VM converted here
Approval newApproval = TinyMapper.Map<Approval>(value);
// Values set server-side here.
newApproval.Id = -1;
newApproval.Created = DateTime.Now;
// Claim queried here
newApproval.CreatedBy = User.FindFirst(ClaimTypes.Name).Value;
// Submission to context
_approvalRepo.Insert(newApproval);
_approvalRepo.Update();
// ...
}
但我非常幸运地尝试想出一种使用 Moq 和 XUnit 对上述控制器进行单元测试的方法。我搜索的许多问题都涉及直接设置控制器的 ControllerBase.User 属性,但是在 Aspnetcore.MVC (1.1.1) 中,User 已设置为 只读.
在这里,我要做什么?
【问题讨论】:
-
@Nkosi 出于自我教育的目的,您能否解释一下为什么这个问题与所链接的问题完全相同相同?有相似之处,但伊利亚的回答直接而简单,我认为这是值得的。
标签: c# unit-testing jwt asp.net-core-webapi