【发布时间】:2021-04-10 19:03:39
【问题描述】:
@RequiredArgsConstructor
@Service
public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
@Transactional
@Override
public Long insertUser(UserSaveRequestDto userSaveRequestDto) {
Long user_id = userMapper.insertUser(userSaveRequestDto);
return user_id;
}
}
我正在尝试测试服务层。
我不知道应该进一步验证哪一个。
下面的代码只是简单的验证了userMapper的insertUser是否被调用或者参数是否被正确包含,还需要做哪些额外的验证?
@ExtendWith(MockitoExtension.class)
public class UserServiceTest {
@Mock
UserMapper userMapper;
@InjectMocks
UserServiceImpl userService;
UserSaveRequestDto userSaveRequestDto;
UserResponseDto userResponseDto;
@BeforeEach
void setUp() {
userSaveRequestDto = UserSaveRequestDto.builder()
.userName("test")
.userPhoneNumber("01026137832")
.build();
userResponseDto = UserResponseDto.builder()
.userId(1L)
.userName("test")
.userPhoneNumber("01026137832")
.build();
}
// Mockito 이용한 테스트 코드
@DisplayName("Mock을 사용한 insertUser 테스트")
@Test
public void insertUser() {
// given
// when
Long userId = userService.insertUser(userSaveRequestDto);
// then
ArgumentCaptor<UserSaveRequestDto> captor = ArgumentCaptor.forClass(UserSaveRequestDto.class);
then(userMapper).should().insertUser(captor.capture());
assertThat(captor.getValue()).isEqualTo(userSaveRequestDto);
}
}
【问题讨论】:
标签: java spring-boot unit-testing testing junit