mockito 运行测试用例时,MapStruct在服务类中不工作

jmo0nnb3  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(182)

我正在创建测试用例,在我的一个服务类方法中我正在使用mapStruct将实体Map到dto类中。
这是我的Map器类

@Mapper(componentModel = "spring")
public interface UserMapper {

    List<UserDto> toUserDto(List<UserEntity> users);
    }

下面是我如何注入我的服务类

@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService{

    private final UserMapper userMapper;

这是我使用它的方式

List<UserDto> userDto = userMapper.toUserDto(lst);

这就是我在测试课上的做法

@RunWith(MockitoJUnitRunner.class)
@SpringBootTest(classes = Application.class)

public class ApplicationTest {

    @Mock
    private UserRepository userRepo;

    @Mock
    private UserMapper userMapper;

    @InjectMocks
    private UserServiceImpl userServiceImpl;

    @Test
    public void contextLoads() {
        then(controller).isNotNull();
        then(userServiceImpl).isNotNull();
    }

    @Test
    public void getAllUser() {
        List<UserEntity> lst = new ArrayList<UserEntity>();
        UserEntity userOne = new UserEntity();
        userOne.setEmpFullname("Test Test1");
        userOne.setUserId("marina");
        userOne.setFlag("Y");
        UserEntity usertwo = new UserEntity();
        usertwo.setEmpFullname("Test Test2");
        usertwo.setUserId("test");
        usertwo.setFlag("Y");
        lst.add(userOne);
        lst.add(usertwo);

        when(userRepo.findByStatus("W")).thenReturn(lst);
        try {
            List<UserDto> pendingUsersList = userServiceImpl.getPendingUser();
            assertEquals(2, pendingUsersList.size());

        } catch (GeneralException e) {
            e.printStackTrace();
        }   
    }
}

当我运行我的测试用例时,我能够在实体类中看到这2条记录,但是当执行这一行时
List<UserDto> userDto = userMapper.toUserDto(lst);它会给我一个空数组。
注意-在我的实体类中,我有很多字段,但从测试类中,我只传递了3个参数。

gwo2fgha

gwo2fgha1#

您已使用@Mock注解注解您的UserMapper,但未写入此mock的mockito设定。则必须是空白数组。请移除@Mock注解,或指定mock应传回的内容。
例如:

@RunWith(MockitoJUnitRunner.class)
@SpringBootTest(classes = Application.class)

public class ApplicationTest {

    @Mock
    private UserRepository userRepo;

    @Spy
    private UserMapper userMapper = Mappers.getMapper(UserMapper.class);

    @InjectMocks
    private UserServiceImpl userServiceImpl;

相关问题