gpt4 book ai didi

c# - 如何在派生 Controller 中模拟 HttpContext.RequestServices.GetService<> 注入(inject)的服务?

转载 作者:行者123 更新时间:2023-12-05 06:18:07 29 4
gpt4 key购买 nike

我有这样定义的基础 Api Controller

[ApiController]
public abstract class BaseController : ControllerBase
{
private IMediator _mediator;

protected IMediator Mediator => _mediator ??= HttpContext.RequestServices.GetService<IMediator>();
}

派生自 BaseController 的授权 Controller

public class AuthController : BaseController
{
[HttpPost(ApiRoutes.Auth.Register)]
public async Task<IActionResult> Register(UserRegistrationRequest request)
{
var response = await Mediator.Send(new UserRegistrationCommand(request.Email, request.Password));

return Ok(response);
}
}

如何在单元测试中模拟 IMediator 服务?当使用构造函数 DI 注入(inject)服务时,我刚刚在测试中将模拟服务传递给构造函数,但在这种情况下我不确定要模拟什么,可能是 HttpContext?

最佳答案

您应该使用 Moq 或 NSubstitute 等库来模拟它。然后使用这些库连接方法。

关于c# - 如何在派生 Controller 中模拟 HttpContext.RequestServices.GetService<> 注入(inject)的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61385068/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com