我要测试如下所示的控制器动作:
[HttpGet("{id}")]
public IActionResult GetUserById(int id)
{
var user = _userService.GetUserById(id);
if (user == null)
{
return NotFound();
}
var currentUserId = int.Parse(User.Identity.Name);
if (id != currentUserId && !User.IsInRole(Role.Admin))
{
return Forbid();
}
return Ok(user);
}
我的测试方法如下:
[Test]
[TestCase(1)]
public void GetUserById_ValidIdAsParameter_ShouldReturnOk(int id)
{
var result = _controller.GetUserById(id);
Assert.That(result, Is.TypeOf<OkObjectResult>());
}
我的问题是我得到“对象引用未设置为对象的实例”。为此行:
var currentUserId = int.Parse(User.Identity.Name);
我无法设置myController.User.Identity.Name,因为它是只读属性。