package com.ruoyi.system.service.impl; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import com.ruoyi.system.domain.TBatteryGroup; import com.ruoyi.system.domain.TBatteryGroupBattery; import com.ruoyi.system.mapper.TBatteryGroupMapper; /** 电池组 Service 单元测试。 */ @ExtendWith(MockitoExtension.class) class TBatteryGroupServiceImplTest { @Mock private TBatteryGroupMapper batteryGroupMapper; @InjectMocks private TBatteryGroupServiceImpl batteryGroupService; @Test void insertShouldPersistBatteriesWithoutTemplate() { TBatteryGroup group = new TBatteryGroup(); group.setGroupName(" 样品组 "); group.setModel("M-01"); group.setBatteryNos(Arrays.asList(" BAT-01 ", "BAT-02")); group.setCreateBy("admin"); when(batteryGroupMapper.selectBatteryGroupByName("样品组")).thenReturn(null); when(batteryGroupMapper.selectBatteryByNo(any(String.class), any())).thenReturn(null); doAnswer(invocation -> { invocation.getArgument(0).setGroupId(12L); return 1; }).when(batteryGroupMapper).insertBatteryGroup(any(TBatteryGroup.class)); assertEquals(1, batteryGroupService.insertBatteryGroup(group)); ArgumentCaptor> captor = ArgumentCaptor.forClass(List.class); verify(batteryGroupMapper).batchInsertBatteries(captor.capture()); assertEquals(Arrays.asList("BAT-01", "BAT-02"), captor.getValue().stream() .map(TBatteryGroupBattery::getBatteryNo).toList()); verify(batteryGroupMapper, never()).batchInsertRelationFields(anyList()); } }