问题描述
我想使用AttributeConverter
测试@DataJpaTest
的实现。
测试代码
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class FooRepositoryTest {
@Autowired
private FooRepository repository;
@Test
void getPojoTest(){
FooEntity fooEnity= repository.findById("foo");
FooPojo fooPojo = fooEntity.getJsonPojo()
//some assertion
}
}
实体
@Entity
@Data
@NoArgsConstructor
public class FooEntity{
....
@Column(columnDefinition= "JSON")
@Convert(converter = FooConverter.class)
private FooPojo data;
....
}
属性转换器
public class FooConverter implements AttributeConverter<FooPojo,String> {
@Autowired
private ObjectMapper mapper;
@SneakyThrows
@Override
public String convertToDatabaseColumn(FooPojo attribute) {
return mapper.writeValueAsString(attribute);
}
@SneakyThrows
@Override
public FooPojo convertToEntityAttribute(String dbData) {
return mapper.readValue(dbData,FooPojo.class);
}
}
使用上面的代码,当我运行getPojoTest()
时,Converter中的@autowired
OjbectMapper
是null
。当我用@SpringBootTest
尝试相同的测试时,它工作得很好。我不知道是否可以同时使用@DataJpaTest
和ObjectMapper
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)