小编Her*_*ong的帖子

如何单元测试HttpContext.SignInAsync()?

SignInAsync()源代码

我遇到了单元测试的一些问题.

  1. DefaultHttpContext.RequestServicesnull
  2. 我试图创建AuthenticationService对象,但我不知道要传递什么参数

我该怎么办?如何进行单元测试HttpContext.SignInAsync()

正在测试的方法

public async Task<IActionResult> Login(LoginViewModel vm, [FromQuery]string returnUrl)
{
    if (ModelState.IsValid)
    {
        var user = await context.Users.FirstOrDefaultAsync(u => u.UserName == vm.UserName && u.Password == vm.Password);
        if (user != null)
        {
            var claims = new List<Claim>
            {
                new Claim(ClaimTypes.Name, user.UserName)
            };
            var identity = new ClaimsIdentity(claims, "HappyDog");

            // here
            await HttpContext.SignInAsync(new ClaimsPrincipal(identity));
            return Redirect(returnUrl ?? Url.Action("Index", "Goods"));
        }
    }
    return View(vm);
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的.

[TestMethod]
public async Task LoginTest()
{
    using …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing .net-core asp.net-core asp.net-core-2.0

12
推荐指数
1
解决办法
2845
查看次数

如何对ViewComponent.Invoke()进行单元测试?

ViewComponentobject中,HttpContext并且User是只读属性.

如何对这样的组件进行单元测试?

我正在使用MSTest Freamwork.

以下属性用于我的代码中

  1. 曲奇饼
  2. 会议
  3. 用户(System.Security.Principal)

public ViewViewComponentResult Invoke()
{
    var vm = new SummaryViewModel();
    if (User.Identity is ClaimsIdentity identity && identity.IsAuthenticated)
    {
        vm.IsAuthenticated = true;
        vm.UserName = identity.Claims.FirstOrDefault(c => c.Type == "UserName").Value;
        vm.PhotoUrl = identity.Claims.FirstOrDefault(c => c.Type == "FacePicture").Value;
    }
    return View(vm);
}

[TestMethod]
public void UserSummaryVcTest()
{
    var component = new UserSummaryViewComponent();
    var model = component.Invoke().ViewData.Model as SummaryViewModel;
    Assert.AreEqual("UserName", model.UserName);
} 
Run Code Online (Sandbox Code Playgroud)

c# unit-testing asp.net-core asp.net-core-mvc-2.0 asp.net-core-viewcomponent

9
推荐指数
1
解决办法
830
查看次数