I want to inject a CsvMapper and ObjectMapper from jackson; their relation is that CsvMapper extends ObjectMapper. I am providing them like so:
<code>@Provides
@Singleton
public ObjectMapper provideObjectMapper() {
return JsonMapper.builder()
.findAndAddModules()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.build();
}
@Provides
@Singleton
public CsvMapper getCsvMapper() {
return CsvMapper.builder()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.build();
}
</code>
<code>@Provides
@Singleton
public ObjectMapper provideObjectMapper() {
return JsonMapper.builder()
.findAndAddModules()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.build();
}
@Provides
@Singleton
public CsvMapper getCsvMapper() {
return CsvMapper.builder()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.build();
}
</code>
@Provides
@Singleton
public ObjectMapper provideObjectMapper() {
return JsonMapper.builder()
.findAndAddModules()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.build();
}
@Provides
@Singleton
public CsvMapper getCsvMapper() {
return CsvMapper.builder()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.build();
}
And using them:
<code>@Mock
private ObjectMapper om;
@Mock
private CsvMapper csvMapper;
@InjectMocks
private ClassToTest classToTest;
</code>
<code>@Mock
private ObjectMapper om;
@Mock
private CsvMapper csvMapper;
@InjectMocks
private ClassToTest classToTest;
</code>
@Mock
private ObjectMapper om;
@Mock
private CsvMapper csvMapper;
@InjectMocks
private ClassToTest classToTest;
However, it shows om has type CsvMapper, so I suspect the DI got confused and injected CsvMapper into om. How can I fix this?