In my code i mock an object :
@Mock
ElasticService elasticServiceMock;
@Autowired
ElasticConfiguration elasticConfiguration;
an i try to do a test :
@Test
public void measureChannelProcessor() throws IOException {
when(elasticServiceMock.insert(anyString(),anyString())).thenAnswer(invocation -> {
String index = (String) invocation.getArguments()[0];
String message = (String) invocation.getArguments()[1];
String requestUri = new StringBuilder()
.append(elasticConfiguration.baseRequestBuilder(index))
.toString();
}
when i call elasticConfiguration.baseRequestBuilder(index) i have null.
the real class of elasticConfiguration is this:
@Configuration
public class ElasticConfiguration {
@Autowired ElasticParameters elasticParameters;
public String baseRequestBuilder(String index){
String toRet = new StringBuilder()
.append(elasticParameters.getProtocol())
.append("://")
.append(elasticParameters.getHost())
.append(":")
.append(elasticParameters.getPort())
.append("/")
.append(index)
.append("/")
.append(elasticParameters.getType())
.append("/")
.toString();
return toRet;
}
in particular i want simple real class elasticConfiguration but
@Autowired
ElasticConfiguration elasticConfiguration;
dont work! and i have java.lang.NullPointerException.
the question is how use an object in Test?
Also if i use @Mock ElasticConfiguration elasticConfiguration;
i have same error but with debug i view that @Autowired ElasticParameters
elasticParameters; in public class ElasticConfiguration { is null.
Some tips?
Thanks
Regards
Aucun commentaire:
Enregistrer un commentaire