【发布时间】:2022-01-08 19:21:14
【问题描述】:
我目前正在尝试在我的项目中实施MediatR,并进行测试。我想介绍一下在发送请求时是否调用了处理程序的Handle。
我有这个问题
public class GetUnitsQuery : IRequest<List<UnitResponse>>
{
}
处理程序:
public class GetUnitsHandler : IRequestHandler<GetUnitsQuery, List<UnitResponse>>
{
readonly IUnitRepository UnitRepository;
readonly IMapper Mapper;
public GetUnitsHandler(IUnitRepository unitRepository, IMapper mapper)
{
this.UnitRepository = unitRepository;
Mapper = mapper;
}
public async Task<List<UnitResponse>> Handle(GetUnitsQuery request, CancellationToken cancellationToken)
{
return Mapper.Map<List<UnitResponse>>(UnitRepository.GetUnits());
}
}
从控制器发送请求:
var result = await Mediator.Send(query);
任何想法如何测试Handler 在使用MoQ 指定特定Query 时是否被调用?
【问题讨论】:
-
这样做有什么意义?这是 MediatR 的责任,不是你的。
-
我完全同意@Orhun,如果您使用的是 MediatR(产品),则不应对其进行测试...如果您正在实施自己的调解器,则应对其进行测试,但我对此表示怀疑从上下文来看是这样的......无论如何,我认为该产品带有一种机制,可以防止在没有处理程序的情况下注册查询......所以......为什么要担心?