Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
如何在扩展Spock规范的Groovy类中模拟Java可选类_Java_Spring Boot_Rest_Groovy_Spock - Fatal编程技术网

如何在扩展Spock规范的Groovy类中模拟Java可选类

如何在扩展Spock规范的Groovy类中模拟Java可选类,java,spring-boot,rest,groovy,spock,Java,Spring Boot,Rest,Groovy,Spock,我有一个非常简单的春假服务。下面是我的Java ServiceImpl类:- 服务Impl类=> @AllArgsConstructor(onConstructor = (@__(@Autowired))) public Class ServiceImpl implements ServiceClass { private ServiceRepository repo; private MapstructRequestMapper1 mapper1; privat

我有一个非常简单的春假服务。下面是我的Java ServiceImpl类:-

  • 服务Impl类=>
    @AllArgsConstructor(onConstructor = (@__(@Autowired)))
    public Class ServiceImpl implements ServiceClass {
    
    
        private ServiceRepository repo;
        private MapstructRequestMapper1 mapper1;
    
    
        private Optional<Pojo1> pojo1;
    
        @Override
        public Optional<Pojo1> getSomething(Pojo2 pojo2, String someString){ return repository.findById(Id)};
    
        @Override
        public SomeResponse createSomething(Pojo2 pojo2, String someString){
    
            pojo1 = getSomething(someString); //This Returns an Optional object.
    
            if(pojo1.ifPresent(pojo1-> {
    
                    //set something with pojo1's attributes and then do something.
    
            });
            )
    
        }
    
    }
    
    
    
    错误=>如果我尝试将def requestTestObj=Mock(Pojo1)作为可选项则会出现以下两个错误:-

  • 不能铸造类。
  • 如果没有“作为可选”,它会给我“impletestclass中没有匹配的构造函数”
  • 我们如何处理这件事?这里使用的DB是Mongo


    谢谢。

    您不能通过常规方式直接模拟类
    可选
    ,因为类是最终类,而Spock模拟基于动态代理,即子分类。但是模仿
    Pojo1
    并将其包装成一个
    可选的
    怎么样

    def requestTestObj=Mock(Pojo1)
    def service=new serviceinpl(ref,mapperRef1,可选。of(requestTestObj))
    
    像往常一样,您可以存根POJO的方法,验证某些方法是否被调用过多次等等

    
        def ref = Mock(Servicerepo)
        def mapperRef1 = Mock(MapstructRequestMapper1)
        //This is where I am stuck
    
        def requestTestObj = Mock(Pojo1)
    
        def service = new ServiceImpl(ref,mapperRef1, requestTestObj) //This is where it fails.
    
        def "myTest - some bla" () {
    
        }
    
    
    }