조롱 테스트에 대한 설명이 필요합니다. 내 특정 시나리오에서는 연결 모듈, 커넥터에 대한 종속성이있는 서비스를 테스트해야합니다. 기본적으로 커넥터는 수행해야하는 서비스 호출의 인스턴스를 작성합니다. 나는 그 모범을 보여 주겠다.모의 검사 명확성
public DataService(Connector connector) {
this.connector = connector;
}
@Override
public ServiceData getWeatherData(String dataId) throws ServiceCommunicatonException {
try {
return connector.newGetWeatherDataCall().call(
WeatherData.builder().withId(dataId).build());
} catch (Exception e) {
throw new ServiceCommunicatonException(ERR_MSG);
}
}
는 그래서 connector.newGetWeatherDataCall()
는 유형 WeatherData
의 인스턴스를 반환합니다.
이제 Service
을 테스트하기 위해 Connector
을 조롱해야한다고 생각합니다. Service
을 조롱하는 것은 아마도 무의미합니다. 왜냐하면 나는 정말로 그것을 테스트하지 않기 때문입니다, 그렇습니까?
나는 이런 식으로 뭔가로 Connector
을 조롱하려고 : 그래서
connector.newGetWeatherDataCall().call(
WeatherData.builder().withId(dataId).build()); was null.
을 반환하는 방법을 수행해야합니다
@Before
public void setUp() {
connector = mock(Connector.class);
}
@Test
public void getDataTest() {
assertNotNull(service.getData("123"));
}
그러나이 문제는이 라인에서 WeatherDataCall
때문에 엄마 NullPointerException
을 주었기 때문에, 분명히 잘못된 것입니다 이것은 적절하게 테스트되거나 조롱을 받습니까? 몇 가지 코드 예제가 있으면 좋을 것입니다.
connector.newGetWeatherDataCall()의 반환 유형은 무엇입니까? 클래스의 이름 –
WeatherData. 나는 그것을 편집 할 때 추가했다. – zwiebl