无法实例化TransmissionsRepository代理类:构造函数匹配失败求助
问题分析与解决
问题场景
执行以下测试代码时:
transmissionsRepository = new Mock<TransmissionsRepository>(transmissionsContext, httpContextAccessor.Object, transLogger.Object); controller = new UtilityController(logger.Object,transmissionsRepository.Object);
实例化控制器阶段抛出异常,报错信息:
无法实例化类Services.Transmissions.TransmissionsRepository的代理。
找不到匹配给定参数的构造函数:
Entities.EDWTransmissionsContext
Castle.Proxies.IHttpContextAccessorProxy
解决方法
- 核对
TransmissionsRepository的公开构造函数签名,确保传入的参数类型、数量、顺序完全匹配某一构造函数。报错核心是Moq找不到对应参数组合的构造函数,需检查httpContextAccessor.Object的实际类型是否与构造函数期望的IHttpContextAccessor接口一致,是否存在类型不兼容问题。 - 优先Mock接口而非具体类:如果
TransmissionsRepository实现了ITransmissionsRepository这类接口,直接Mock接口能规避具体类构造函数的匹配问题,同时更符合依赖倒置原则。 - 验证传入参数的有效性:确认
transmissionsContext、httpContextAccessor.Object、transLogger.Object均为正确初始化的实例,无空引用或类型不匹配情况。
内容的提问来源于stack exchange,提问作者Post Impatica
相关产品推荐
相关产品推荐

