具有基于角色的授权的单元测试Web API控制器

时间:2019-06-25 12:03:07

标签: unit-testing nunit asp.net-core-webapi

我要测试如下所示的控制器动作:

    [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,因为它是只读属性。

0 个答案:

没有答案