我不知道为什么测试失败了壮举少年

tjrkku2a  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(235)

用户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)
我不知道为什么考试不及格,请帮帮我

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题