Fient клиент Тестирование - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть следующий класс обслуживания, который использует симулированный клиент.Я не могу выполнить модульное тестирование сервиса.

Slf4j

@ Публичный класс сервиса SsoService {

public static final String NO_LINKED_ACCOUNTS_FOUND = "No linked accounts found";

@Autowired
private SsoClient ssoClient;

public String getIdpIdentifier(String accessToken){
    log.info("In getUserInfo for token : " + accessToken);
    try {
       SsoUserInfo ssoUserInfo = ssoClient.getUserInfo(accessToken);
        String idpIdentifier = getIdpIdentifier(ssoUserInfo);
        System.out.println("idpIdentifier = " + idpIdentifier);
        return idpIdentifier;
    } catch (Exception e) {
        log.error("Error occured while converting token value to Json Object ", e);
        throw new UnauthorizedException("Invalid data received");
    }
}

, и вот мой клиент Feign

@FeignClient(name = "ctlSso", configuration = BaseFeignClientConfiguration.class)

publicинтерфейс SsoClient {

@GetMapping(value = "/restv1/userinfo")
SsoUserInfo getUserInfo(@RequestParam("access_token") String accessToken);

}

И тест показан ниже

    @RunWith(SpringRunner.class)
public class CtlSsoService_UT {

    @MockBean
    SsoClient ssoClient;

    @InjectMocks
    SsoService ssoService;


    @Test
    public void getIdpIdentifierSuccessful(){
//        "createSession end point is called 503dbaa3-6dea-419c-bcd4-59cfc0adf84a, userIdentifier: betaadmin@beta.com and apikey: Basic bXNwLWNsaWVudDpxYS1iR2dSZHFYOTd0VGFWYWs3eDdKbW5yYU4=";
        CtlSsoUserInfo userInfo = new CtlSsoUserInfo();
        userInfo.setCTLClientToken("123");
        userInfo.setCTLClientUid("123");
        userInfo.setCTLLastLogin("132");
        userInfo.setCTLLastUpdated("123");
        userInfo.setCTLMultiFactor("123");
        userInfo.setCTLPasswordChange("123");
        userInfo.setEmail("123");
        userInfo.setFamilyName("123");
        userInfo.setGivenName("123");
        userInfo.setName("123");
        userInfo.setSub("123");
        when(ssoClient.getUserInfo(anyString())).thenReturn(userInfo);
        String idpIdentifier = ssoService.getIdpIdentifier("503dbaa3-6dea-419c-bcd4-59cfc0adf84a");

    }


}

и, получив следующую ошибку, похоже, что аннотация mockbean не создает экземплярSsoClient.любые указатели, пожалуйста.

15:15:23.877 [main] INFO SsoService - In getUserInfo for token : 503dbaa3-6dea-419c-bcd4-59cfc0adf84a

15: 15: 23.879 [main] ОШИБКА mspauthuiapi.service.SsoService - Произошла ошибка при преобразовании значения токена в объект Json. java.lang.NullPointerException: null

...