junit - @DataJpaTest 期间自动装配的 ObjectMapper 为空
问题描述
我想测试我的实现以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()
,@autowired
OjbectMapper
转换器中的null
. 当我尝试使用相同的测试时@SpringBootTest
,它工作得很好。@DataJpaTest
我想知道是否有任何可以一起使用和走动的地方ObjectMapper
。
解决方案
从文档:
如果您想测试 JPA 应用程序,可以使用 @DataJpaTest。默认情况下,它将配置一个内存嵌入式数据库,扫描@Entity 类并配置 Spring Data JPA 存储库。常规 @Component bean 不会加载到 ApplicationContext 中。
推荐阅读
- groovy - 在 Groovy 3 中,添加了大约 80 种新的此类扩展方法。在哪里可以找到完整列表?
- javascript - 如何在点击功能上将数据设置到数据表中?
- firebase - 如何构建一个 Firebase 数据库以允许用户喜欢产品,在价格和时间上最小化成本?
- python - 在 PySpark 中将 Unix 时间戳转换为 ms 时间戳
- c# - 在 UWP 中未检测到绑定可见性属性的变量
- c++ - 带有预处理器指令的 .rc 文件
- java - 我在使用这个构造函数时遇到问题
- php - 标头已经发送,php mvc
- linux - Spinnaker-Halyard - 错误获取应用程序
- c# - 在 webApi 中显示字节而不是实际的 pdf 文件