用户Map器.java
@Mapper
public interface UserMapper {
public List<UserResponseDto> selectUserList();
public void insertUser(UserSaveRequestDto userSaveRequestDto);
}
userserviceimpl.java文件
@RequiredArgsConstructor
@Service
public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
@Transactional
@Override
public Long insertUser(UserSaveRequestDto userSaveRequestDto) {
userMapper.insertUser(userSaveRequestDto);
return userSaveRequestDto.getUserId();
}
}
用户服务测试.java
@ExtendWith(SpringExtension.class)
public class UserServiceTest {
@Mock
UserMapper userMapper;
@InjectMocks
UserServiceImpl userService;
// Mockito 이용한 테스트 코드
@DisplayName("Mock을 사용한 insertUser 테스트")
@Test
public void insertUser() {
// given
UserSaveRequestDto userSaveRequestDto = UserSaveRequestDto.builder()
.userName("test")
.userPhoneNumber("01026137832")
.build();
willDoNothing().given(userMapper).insertUser(userSaveRequestDto);
given(userService.insertUser(userSaveRequestDto)).willReturn(1L);
// when
Long userId = userService.insertUser(userSaveRequestDto);
// then
//mockito 스타일
verify(userMapper).insertUser(userSaveRequestDto);
//BDDMockito 스타일
then(userMapper).should().insertUser(userSaveRequestDto);
assertThat(userId).isEqualTo(1L);
}
}
例外
org.mockito.exceptions.misusing.cannotstubvoidmethodwithreturnvalue:'insertuser'是一个void方法,不能用返回值来存根!voids通常是用throw(exception).when(mock).somevoidmethod()创建的;如果需要将void方法设置为不执行任何操作,则可以使用:donothing().when(mock).somevoidmethod();有关更多信息,请查看mockito.donothing()的javadocs。
如果您不确定为什么会出现上述错误,请继续阅读。由于上述语法的性质,出现问题的原因可能是:
您尝试存根的方法已重载。确保调用的是正确的重载版本。
在测试的某个地方,你正在截取最终的方法。抱歉,mockito不验证/stub final方法。
spy是使用when(spy.foo()).then()语法生成的。更安全的做法是把间谍留下来-
使用doreturn | throw()方法家族。有关mockito.spy()方法的更多信息,请参阅javadocs。
不支持对非公共父类声明的模拟方法。在com.example.mybatis.user.userservicetest.insertuser(userservicetest。java:43)在sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)在sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl)。java:62)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:498)位于org.junit.platform.commons.util.reflectionutils.invokemethod(reflectionutils。java:688)
我不知道为什么考试不及格,请帮帮我
暂无答案!
目前还没有任何答案,快来回答吧!