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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/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 mvc 在Spock中模拟RestOperations.exchange(使用varargs重载方法)_Spring Mvc_Mocking_Spock - Fatal编程技术网

Spring mvc 在Spock中模拟RestOperations.exchange(使用varargs重载方法)

Spring mvc 在Spock中模拟RestOperations.exchange(使用varargs重载方法),spring-mvc,mocking,spock,Spring Mvc,Mocking,Spock,我试图在Spock中模拟org.springframework.web.client.RestOperations.exchange。 斯波克以失败告终 Too few invocations for: 1 * restOperations.exchange("https://test.com", HttpMethod.POST, _ as HttpEntity, String) (0 invocations) Unmatched invocations (ordered by simi

我试图在Spock中模拟
org.springframework.web.client.RestOperations.exchange
。 斯波克以失败告终

Too few invocations for:

1 * restOperations.exchange("https://test.com", HttpMethod.POST, _ as HttpEntity, String)   (0 invocations)

Unmatched invocations (ordered by similarity):

1 * restOperations.exchange('https://test.com', POST, <whatever,[]>, class java.lang.String, [])
MyTest.groovy:


import org.apache.http.HttpEntity
import org.springframework.http.HttpMethod
import org.springframework.web.client.RestOperations
import spock.lang.Specification

class MyTest extends Specification {
    RestOperations restOperations = Mock(RestOperations)
    MySubject subject = new MySubject(restOperations)

    def "test"() {
        when:
        subject.doStuff()
        then:
        1 * restOperations.exchange("https://test.com", HttpMethod.POST, _ as HttpEntity, String)
    }
}

您有多个问题:

  • 在应用程序中,在测试
    org.apache.http.HttpEntity
    中导入
    org.springframework.http.HttpEntity
    。你需要纠正这一点

  • 调用
    rest.exchange(“https://test.com“,HttpMethod.POST,httpEntity)甚至不会编译,因为
    RestOperations
    类中没有这样的签名。您需要添加参数
    String.class

  • 在测试中,您需要反映包含varargs的方法签名,即实际方法签名有5个参数

  • 如果您解决了所有这些问题,您的测试将顺利运行:

    package de.scrum_master.stackoverflow.q61135628;
    导入org.springframework.http.HttpEntity;
    导入org.springframework.http.HttpMethod;
    导入org.springframework.web.client.rest操作;
    公共类MySubject{
    私人最终休息;
    公共MySubject(rest操作rest){
    这个。休息=休息;
    }
    公共空间{
    HttpEntity HttpEntity=新的HttpEntity(“任何”);
    其余.交换(”https://test.com,HttpMethod.POST,httpEntity,String.class);
    }
    }
    
    package de.scrum\u master.stackoverflow.q61135628
    导入org.springframework.http.HttpMethod
    导入org.springframework.web.client.rest操作
    导入spock.lang.Specification
    类MyTest扩展了规范{
    RestOperations RestOperations=Mock()
    MySubject subject=新的MySubject(restOperations)
    def“测试”(){
    什么时候:
    subject.doStuff()
    然后:
    1*restOperations.exchange(“https://test.com,HttpMethod.POST,\ u0,字符串,\ u0)
    //或者,如果您想更具体一些:
    //1*restOperations.exchange(“https://test.com“,HttpMethod.POST,200;,字符串,[])
    }
    }
    
    您有多个问题:

  • 在应用程序中,在测试
    org.apache.http.HttpEntity
    中导入
    org.springframework.http.HttpEntity
    。你需要纠正这一点

  • 调用
    rest.exchange(“https://test.com“,HttpMethod.POST,httpEntity)甚至不会编译,因为
    RestOperations
    类中没有这样的签名。您需要添加参数
    String.class

  • 在测试中,您需要反映包含varargs的方法签名,即实际方法签名有5个参数

  • 如果您解决了所有这些问题,您的测试将顺利运行:

    package de.scrum_master.stackoverflow.q61135628;
    导入org.springframework.http.HttpEntity;
    导入org.springframework.http.HttpMethod;
    导入org.springframework.web.client.rest操作;
    公共类MySubject{
    私人最终休息;
    公共MySubject(rest操作rest){
    这个。休息=休息;
    }
    公共空间{
    HttpEntity HttpEntity=新的HttpEntity(“任何”);
    其余.交换(”https://test.com,HttpMethod.POST,httpEntity,String.class);
    }
    }
    
    package de.scrum\u master.stackoverflow.q61135628
    导入org.springframework.http.HttpMethod
    导入org.springframework.web.client.rest操作
    导入spock.lang.Specification
    类MyTest扩展了规范{
    RestOperations RestOperations=Mock()
    MySubject subject=新的MySubject(restOperations)
    def“测试”(){
    什么时候:
    subject.doStuff()
    然后:
    1*restOperations.exchange(“https://test.com,HttpMethod.POST,\ u0,字符串,\ u0)
    //或者,如果您想更具体一些:
    //1*restOperations.exchange(“https://test.com“,HttpMethod.POST,200;,字符串,[])
    }
    }
    
    
    import org.apache.http.HttpEntity
    import org.springframework.http.HttpMethod
    import org.springframework.web.client.RestOperations
    import spock.lang.Specification
    
    class MyTest extends Specification {
        RestOperations restOperations = Mock(RestOperations)
        MySubject subject = new MySubject(restOperations)
    
        def "test"() {
            when:
            subject.doStuff()
            then:
            1 * restOperations.exchange("https://test.com", HttpMethod.POST, _ as HttpEntity, String)
        }
    }