Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 如何在空手道模拟Servlet配置中模拟JPA回购?_Spring Boot_Spring Mvc_Karate_Mockserver - Fatal编程技术网

Spring boot 如何在空手道模拟Servlet配置中模拟JPA回购?

Spring boot 如何在空手道模拟Servlet配置中模拟JPA回购?,spring-boot,spring-mvc,karate,mockserver,Spring Boot,Spring Mvc,Karate,Mockserver,我有一个SpringBoot2.2.4项目,其中有一个REST控制器、一个服务和一个JPA存储库。我可以使用空手道模拟servlet为控制器和服务定义一个模拟,但我不知道如何处理存储库。控制器@自动连接服务。服务@自动连接到存储库 因此,我在运行空手道测试时收到以下消息: 原因:org.springframework.beans.factory.NoSuchBean定义异常:没有可用的“repository.EmployeeRepository”类型的合格bean:至少需要1个符合autowir

我有一个SpringBoot2.2.4项目,其中有一个REST控制器、一个服务和一个JPA存储库。我可以使用空手道模拟servlet为控制器和服务定义一个模拟,但我不知道如何处理存储库。控制器@自动连接服务。服务@自动连接到存储库

因此,我在运行空手道测试时收到以下消息:

原因:org.springframework.beans.factory.NoSuchBean定义异常:没有可用的“repository.EmployeeRepository”类型的合格bean:至少需要1个符合autowire候选条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

我使用的MockServlet正是演示中的这个类:

MockConfig类与此类似:

最后,karate-config.js文件以这种方式引导MockSpringMvServlet(如空手道演示代码所示):

注意:如果我从API调用中删除JPA存储库,那么空手道模拟Servlet在服务器不运行的情况下工作正常,空手道测试成功通过


你知道我该怎么做吗?如果有人能给我指出正确的方向,我将不胜感激。

MockDemoConfig
添加方法,该方法将返回服务和存储库的实例。您可以看到Spring正在尝试执行自动连线,但找不到bean

由于Spring Boot所具有的所有“魔力”,您将需要准确地了解如何手动实例化存储库可能依赖的
数据源等内容。不幸的是,这超出了我的专业范围。如果您有一些Spring知识,您应该能够快速地解决这个问题——或者Spring引导测试库中可能有一个帮助器/测试注释


一个提示是,答案可能就在和朋友之间——您可以将服务自动连接到JUnit测试类中。然后,使用一些Java单例就很简单了,您可以在
karate config.js
中获得对它的引用,然后从那里获取它。

将方法添加到
MockDemoConfig
中,该方法将返回服务和存储库的实例。您可以看到Spring正在尝试执行自动连线,但找不到bean

由于Spring Boot所具有的所有“魔力”,您将需要准确地了解如何手动实例化存储库可能依赖的
数据源等内容。不幸的是,这超出了我的专业范围。如果您有一些Spring知识,您应该能够快速地解决这个问题——或者Spring引导测试库中可能有一个帮助器/测试注释


一个提示是,答案可能就在和朋友之间——您可以将服务自动连接到JUnit测试类中。那么,使用一些Java单例就很简单了,您可以在
karate config.js
中获得对它的引用,然后从那里获得它。

谢谢Peter。我知道我需要一个模拟实现。我只是想找一个例子来说明该怎么做。谢谢彼得。我知道我需要一个模拟实现。我只是想举个例子说明该怎么做。

function fn() {
  var config = {
    baseUrl: 'http://localhost:8080'
  };

  var Factory = Java.type('demo.MockSpringMvcServlet');
  karate.configure('httpClientInstance', Factory.getMock());

  return config;
}