我有一个带有 REST 控制器、服务和 JPA 存储库的 spring boot 2.2.4 项目。我可以使用 karate mock servlet 为控制器和服务定义一个 mock,但我不知道要为存储库做什么。控制器@Autowired 服务。服务@Autowired 存储库。
结果,当我运行空手道测试时,我收到了这条消息:
引起:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“repository.EmployeeRepository”类型的合格bean:预计至少有1个有资格作为自动装配候选者的bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
我正在使用的 MockServlet 正是来自演示的这个类: MockSpringMvcServlet
使用类似于此的 MockConfig 类: MockDemoConfig
最后, karate-config.js 文件以这种方式引导 MockSpringMvServlet(如 karate 演示代码中所示):
function fn() {
var config = {
baseUrl: 'http://localhost:8080'
};
var Factory = Java.type('demo.MockSpringMvcServlet');
karate.configure('httpClientInstance', Factory.getMock());
return config;
}
注意:如果我从 API 调用中删除 JPA 存储库,那么 Karate Mock Servlet 可以在没有服务器运行的情况下正常工作,并且 Karate 测试成功通过。
知道我会怎么做吗?如果有人能指出我正确的方向,我将不胜感激。