我正在使用 Mediatr 库来注册和调用我的 RequestHandler。一切都很顺利,直到我开始阅读更多有关集成测试的内容。
编辑后请阅读
我无法调用继承自 RequesHandler 的类。
我的班级是这样的:
public class MyRequestHandler : RequestHandler<MyRequest, MyResponse>
{
....
}
我没有使用 Meditr异步,而是使用 .net Framework 4.7 而不是 asp.net core,因此,一切看起来都返回了我对 asp.net core 的答案。
当我构建时MyTestClass,要构建RequestHandler我必须创建一个ServiceFactory,也许这就是问题,因为我不知道如何。
public MyClassTest()
{
ServiceFactory sv = null;
_mediator = new Mediator(sv);
}
编辑
提供更多信息
我的应用程序层中有这个处理程序
public class LogInUserByFormHandler : RequestHandler<LogInUserByFormRequest, LogInUserByFormResponse>
{
private readonly IValidator<LogInUserByFormRequest> _validator;
public LogInUserByFormHandler(IValidator<LogInUserByFormRequest> validator)
{
_validator = validator;
}
protected override LogInUserByFormResponse Handle(LogInUserByFormRequest request)
{
_validator.ValidateAndThrow(request);
var userInfo = GetUserInfo(request);
ValidateLogInUserByFormRules(userInfo);
var userLoginInfo = GetValidUserLoginInfo(request);
ValidateUserLoginInfoByFormRules(userLoginInfo);
var sessionKey = CreateUserSessionKey(userInfo);
var response = new LogInUserByFormResponse
{
UserName = request.UserName,
SessionKey = sessionKey,
UserId = userInfo.id_usuario
};
return response;
}
//A LOT OF CODE HERE, methods and etc
}
可以看到,它实现了 Mediatr。在我的表示层 Web 项目中,我使用 AutoFac 来注入处理程序,因此,我所做的任何请求总是由正确的方法处理。我所要做的就是打电话,如下所示:
var logInByFormRequest = new LogInUserByFormRequest
{
UserName = viewModel.UserName,
Password = viewModel.Password
};
var response = _mediator.Send(logInByFormRequest).Result;
这就像一个魅力。现在的问题出在测试项目上。它像演示项目一样引用应用程序。我不知道如何让 mediator.send 找到正确的方法。
繁华开满天机
相关分类