Unit testing 如何最好地对使用IServiceGateway调用其他内部服务的ServiceStack服务进行单元测试
我一直遵循这里的指导原则- 我试图做单元测试而不是集成,只是为了降低模拟和其他复杂性 我的一些服务通过推荐的IServiceGateway API调用我的一些其他服务,例如Gateway.SendMyRequest 但是,当运行测试时,我得到System.NotImplementedException:“无法解析服务”GetMyContentRequest 我使用了container.RegisterAutoWired,这是处理此请求的服务Unit testing 如何最好地对使用IServiceGateway调用其他内部服务的ServiceStack服务进行单元测试,unit-testing,servicestack,inversion-of-control,Unit Testing,servicestack,Inversion Of Control,我一直遵循这里的指导原则- 我试图做单元测试而不是集成,只是为了降低模拟和其他复杂性 我的一些服务通过推荐的IServiceGateway API调用我的一些其他服务,例如Gateway.SendMyRequest 但是,当运行测试时,我得到System.NotImplementedException:“无法解析服务”GetMyContentRequest 我使用了container.RegisterAutoWired,这是处理此请求的服务 我不知道下一步该去哪里。我真的不想再次开始设置集成测试
我不知道下一步该去哪里。我真的不想再次开始设置集成测试模式。如果您尝试以单元测试的形式执行服务集成,而不是以验证有效状态启动的集成测试,则可能会不断遇到问题 但对于网关请求,它们是使用IServiceGateway执行的,您可以选择在自定义AppHost中使用自定义实现覆盖该IServiceGateway,或者在IOC中注册IServiceGateway工厂或IServiceGateway,以下是默认实现:
public virtual IServiceGateway GetServiceGateway(IRequest req)
{
if (req == null)
throw new ArgumentNullException(nameof(req));
var factory = Container.TryResolve<IServiceGatewayFactory>();
return factory != null ? factory.GetServiceGateway(req)
: Container.TryResolve<IServiceGateway>()
?? new InProcessServiceGateway(req);
}
如果您试图以单元测试的形式执行服务集成,而不是以验证有效状态启动的集成测试,那么您可能会不断遇到问题 但对于网关请求,它们是使用IServiceGateway执行的,您可以选择在自定义AppHost中使用自定义实现覆盖该IServiceGateway,或者在IOC中注册IServiceGateway工厂或IServiceGateway,以下是默认实现:
public virtual IServiceGateway GetServiceGateway(IRequest req)
{
if (req == null)
throw new ArgumentNullException(nameof(req));
var factory = Container.TryResolve<IServiceGatewayFactory>();
return factory != null ? factory.GetServiceGateway(req)
: Container.TryResolve<IServiceGateway>()
?? new InProcessServiceGateway(req);
}
是的,我刚刚意识到这可能会导致电话螺旋上升。是的,我刚刚意识到这可能会导致电话螺旋上升。