using DOAN.Model.MES.base_; using DOAN.Model.MES.base_.Dto; using DOAN.Model.MES.product; using DOAN.Model.MES.product.Dto; using DOAN.Service.MES.product; using DOAN.Service.MES.product.IService; using Infrastructure.Pagination; using Moq; using Xunit; namespace DOAN.Tests.MES.Product { /// /// 工单服务集成测试 /// public class ProWorkorderIntegrationTests { private readonly ProWorkorderService _workorderService; private readonly Mock _mockCoreService; private readonly Mock _mockQueryService; private readonly Mock _mockImportService; private readonly Mock _mockExportService; private readonly Mock _mockUtilityService; private readonly Mock _mockReferenceService; public ProWorkorderIntegrationTests() { // 创建所有子Service的模拟对象 _mockCoreService = new Mock(); _mockQueryService = new Mock(); _mockImportService = new Mock(); _mockExportService = new Mock(); _mockUtilityService = new Mock(); _mockReferenceService = new Mock(); // 初始化主Service _workorderService = new ProWorkorderService( _mockCoreService.Object, _mockQueryService.Object, _mockImportService.Object, _mockExportService.Object, _mockUtilityService.Object, _mockReferenceService.Object ); } /// /// 测试工单服务集成 - 查询列表 /// [Fact] public void GetList_ShouldCallQueryService() { // Arrange var queryDto = new ProWorkorderQueryDto { productionName = "集成测试产品" }; var expectedResult = new PagedInfo { Total = 1, Result = new List { new ProWorkorderDto3 { productionName = "集成测试产品" } } }; _mockQueryService.Setup(x => x.GetList(queryDto)) .Returns(expectedResult); // Act var result = _workorderService.GetList(queryDto); // Assert Assert.NotNull(result); Assert.Equal(expectedResult.Total, result.Total); Assert.Single(result.Result); _mockQueryService.Verify(x => x.GetList(queryDto), Times.Once); } /// /// 测试工单服务集成 - 添加工单 /// [Fact] public void AddProWorkorder_ShouldCallCoreService() { // Arrange var workorder = new ProWorkorder { productionName = "集成测试产品", productionCode = "INT001" }; var expectedWorkorder = new ProWorkorder { Id = "1", productionName = "集成测试产品", productionCode = "INT001" }; _mockCoreService.Setup(x => x.AddProWorkorder(workorder)) .Returns(expectedWorkorder); // Act var result = _workorderService.AddProWorkorder(workorder); // Assert Assert.NotNull(result); Assert.Equal(expectedWorkorder.Id, result.Id); _mockCoreService.Verify(x => x.AddProWorkorder(workorder), Times.Once); } /// /// 测试工单服务集成 - 获取详情 /// [Fact] public void GetInfo_ShouldCallQueryService() { // Arrange var workorderId = "1"; var expectedWorkorder = new ProWorkorder { Id = workorderId, productionName = "集成测试产品" }; _mockQueryService.Setup(x => x.GetInfo(workorderId)) .Returns(expectedWorkorder); // Act var result = _workorderService.GetInfo(workorderId); // Assert Assert.NotNull(result); Assert.Equal(expectedWorkorder.Id, result.Id); _mockQueryService.Verify(x => x.GetInfo(workorderId), Times.Once); } /// /// 测试工单服务集成 - 生成工单号 /// [Fact] public void Generate_workorder_ShouldCallUtilityService() { // Arrange var queryDto = new ProWorkorderQueryDto2 { productionName = "集成测试产品" }; _mockUtilityService.Setup(x => x.Generate_workorder(queryDto)) .Returns(1); // Act var result = _workorderService.Generate_workorder(queryDto); // Assert Assert.Equal(1, result); _mockUtilityService.Verify(x => x.Generate_workorder(queryDto), Times.Once); } /// /// 测试工单服务集成 - 获取物料信息 /// [Fact] public void GetMaterialInfo_ShouldCallReferenceService() { // Arrange var queryDto = new BaseMaterialListQueryDto5 { MaterialName = "集成测试物料" }; var expectedResult = new List { new BaseMaterialList { MaterialName = "集成测试物料" } }; _mockReferenceService.Setup(x => x.GetMaterialInfo(queryDto)) .Returns(expectedResult); // Act var result = _workorderService.GetMaterialInfo(queryDto); // Assert Assert.NotNull(result); Assert.Single(result); _mockReferenceService.Verify(x => x.GetMaterialInfo(queryDto), Times.Once); } } }