Протестируйте сервис в Springboot - PullRequest
0 голосов
/ 29 сентября 2019

Это услуга, которую я имею:

@Service
public class UserInfoService {

    @Autowired
    private UserInfoServiceClient UserInfoServiceClient; // Call another Rest API

    public ResponseEntity<ResponseUserInfoData> sendUserInfo(String UserId) throws RuntimeException {

        ResponseUserInfoData responseUserInfoData = new ResponseUserInfoData();

           //Get the body from the User service client

            UserServiceDTO UserServiceDTO = UserInfoServiceClient.sendResponse(UserId).getBody();

            //Set the values of responseUserInfoData

            Optional<UserServiceDTO> UserServiceDTOOptional = Optional.ofNullable(UserServiceDTO);

            if (UserServiceDTOOptional.isPresent()) {

                UserServiceDTOOptional.map(UserServiceDTO::getId).ifPresent(responseUserInfoData::setid);

            }
            else return ResponseEntity.noContent().build();

        }


    }

Я должен проверить ее.Я новичок в тестировании JUnit.Я хочу проверить следующие пункты:

  1. Чтобы проверить, возвращает ли служба объект ответа

  2. Чтобы проверить, работает ли метод get и set

Это то, что я начал?

@RunWith(MockitoJUnitRunner.class)
public class ServiceTests {

    @InjectMocks
    private UserInfoService UserInfoService;

    @Mock
    private UserInfoServiceClient UserInfoServiceClient;

    @Mock
    private UserServiceDTO UserServiceDTO;

    @Test
    public void shouldReturnUserInfoData() throws IOException{

        UserInfoService.sendUserInfo("ABC");
    }
}

Любая помощь приветствуется?

1 Ответ

0 голосов
/ 29 сентября 2019

Mockito полезен для проверки зависимостей службы, чтобы вы могли протестировать весь путь кода в вашей службе.В вашем случае вы захотите заглушить вызов serInfoServiceClient.sendResponse (UserId) и заставить его возвращать определенный UserServiceDTO для каждого теста.

Файл теста выглядит так, как будто он настроен правильно, вам нужно только смоделировать метод, чтобы получить результат, необходимый для определенного теста, например,

@RunWith(MockitoJUnitRunner.class)
public class ServiceTests {

    @InjectMocks
    private UserInfoService UserInfoService;

    @Mock
    private UserInfoServiceClient UserInfoServiceClient;

    @Test
    public void shouldReturnUserInfoData() throws IOException{
        final String userId = "123";
        // The mocked return value should be set up per test scenario
        final UserServiceDto dto = new UserServiceDto();
        final ResponseEntity<UserServiceDTO> mockedResp = new ResponseEntity<>(dto, HttpStatus.OK);

        // set up the mock service to return your response
        when(UserInfoServiceClient.sendResponse(userId)).thenReturn(mockedResp);

        // Call your service
        ResponseEntity<ResponseUserInfoData> resp = UserInfoService.sendUserInfo(userId);

        // Test the result
        Assert.isNotNull(resp);
    }
}

Также естьдругие способы смоделировать зависимости с помощью Mockito.Я предлагаю пройти быстрый старт https://site.mockito.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...