我在编写测试代码时有一个问题。壮举JUnit
I have a question while writing the test code. feat JUnit
@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);
}
}
您应该测试 returned userId 是否具有预期值。告诉 userMapper 模拟 return 一个特定的值,并断言 userService return 也编辑了它。
assertThat(userId).isEqualTo(expectedIdValue);
@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);
}
}
您应该测试 returned userId 是否具有预期值。告诉 userMapper 模拟 return 一个特定的值,并断言 userService return 也编辑了它。
assertThat(userId).isEqualTo(expectedIdValue);