ABP vNext 单元测试模拟HttpContext

ABP vNext 单元测试模拟HttpContext

1.Application.Tests的Module中注入

    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        context.Services.AddHttpContextAccessor();
    }

2.TestBase注入ICurrentUser信息

[Dependency(ReplaceServices = true)]
public class FakeCurrentPrincipalAccessor : ThreadCurrentPrincipalAccessor
{
    protected override ClaimsPrincipal GetClaimsPrincipal()
    {
        return GetPrincipal();
    }

    private ClaimsPrincipal GetPrincipal()
    {
        return new ClaimsPrincipal(new ClaimsIdentity(new List<Claim>
                {
                    new Claim(AbpClaimTypes.UserId, "2e701e62-0953-4dd3-910b-dc6cc93ccb0d"),
                    new Claim(AbpClaimTypes.UserName, "admin"),
                    new Claim(AbpClaimTypes.Email, "admin@abp.io"),
                    new Claim(AbpClaimTypes.Name, "admin")
                }
            )
        );
    }
}

3.Application.Tests的Module中使用

    public class PointInspectionTopicService_Test : EquipApplicationTestBase
    {
        private readonly IPointInspectionTopicService _pointInspectionTopicService;
        private readonly IHttpContextAccessor _contextAccessor;
        public PointInspectionTopicService_Test()
        {
            _contextAccessor = ServiceProvider.GetService<IHttpContextAccessor>();
            _pointInspectionTopicService = GetRequiredService<IPointInspectionTopicService>();
        }

        /// <summary>
        /// 点检项目新增单元测试
        /// </summary>
        /// <returns></returns>
        [Fact]
        public async Task Test_CreateAsync_OK()
        {

            var queryColl = new Dictionary<string, Microsoft.Extensions.Primitives.StringValues>();
            //queryColl.Add("Name", new StringValues("zhangsan"));
            var moqContext = new Mock<HttpContext>();
            var moqRequest = new Mock<HttpRequest>();
            moqRequest.Setup(p => p.Query).Returns(new QueryCollection(queryColl));
            moqContext.Setup(p => p.Request).Returns(moqRequest.Object);
            _contextAccessor.HttpContext = moqContext.Object;

            await _pointInspectionTopicService.CreateAsync(new()
            {
                Name = "测试新增点检项目",
                Description = "测试新增点检项目",
                JobGuide = "测试新增点检项目指南",
                IsEnabled = true,
                Status = 1
            });



            var entity = await _pointInspectionTopicService.GetListWithDetailsAsync(new()
            {
                PageIndex = 1,
                PageSize = 10,
            });
            entity.TotalNumber.ShouldBe(2);
        }

    }

4 .Application中方法

   /// <summary>
        /// 获取分页数据包含明细数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task<PointInspectionTopicRes> GetListWithDetailsAsync(PagePointInspectionTopicReq input)
        {
            var dyParams = HttpContext.Request.Query.GetDynamicParams();
            var topicCount = await _pointInspectionTopicRepository.WithDetailsAsync(s => s.PointInspectionDetails);
            topicCount = dyParams.QueryKeys.IsNullOrWhiteSpace() ? topicCount : topicCount.Where(dyParams.QueryKeys, dyParams.QueryValues.ToArray());
            var topic = topicCount.Skip(input.SkipCount).Take(input.PageSize).ToList();
            return new PointInspectionTopicRes(topicCount.Count(), ObjectMapper.Map<List<PointInspectionTopic>, List<PointInspectionTopicInfoRes>>(topic));

        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值