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
将集合(列表)用作布尔值的Groovy语义_Groovy - Fatal编程技术网

将集合(列表)用作布尔值的Groovy语义

将集合(列表)用作布尔值的Groovy语义,groovy,Groovy,Groovy 2.14.12 我相信我已经正确地解释了布尔值。对于以下代码,我收到了一条公关评论: 没有这样的语义。您可以自己检查: 断言null==true | 假的 断言null==false | false null既不是真的也不是假的。您链接的测试用例确保httpRequest.requestBody始终是!空,所以它将 总是通过 测试用例:1 @Test void "successfully_execute_invokeSNAPRestAPI_with_HttpReq

Groovy 2.14.12

我相信我已经正确地解释了布尔值。对于以下代码,我收到了一条公关评论:

没有这样的语义。您可以自己检查:

断言null==true | 假的 断言null==false | false null既不是真的也不是假的。您链接的测试用例确保httpRequest.requestBody始终是!空,所以它将 总是通过

测试用例:1

@Test
    void "successfully_execute_invokeSNAPRestAPI_with_HttpRequest_without_optional"() {

        when:
        Object stepScript = loadScript([(RequestResponseMock.HTTP_RESPONSE_STATUS):
                                                HttpConstants.HTTP_RESPONSE_CODE_OK,
                                        (RequestResponseMock.HTTP_RESPONSE_CONTENT):
                                                RequestResponseMock.AUTHORIZE_APPROVED_RESULT,
        ])

        HttpRequest httpRequest = new HttpRequest(RequestResponseMock.SNAP_SERVER_URL_VALUE,
                HttpConstants.HTTP_METHODS.PUT.name(),
                HttpConstants.REQUEST_CONTENT_TYPE_JSON,
                HttpConstants.ACCEPT_TYPE_JSON
        )

        and:
        HttpClient httpClient = new HttpClient(stepScript)
        Map response = httpClient.invokeSNAPRestAPI(httpRequest)

        then:
        assert stepScript
        assert response
        assert response.get(HttpConstants.HTTP_RESPONSE_CODE) == HttpConstants.HTTP_RESPONSE_CODE_OK
    }
测试用例通过,输出:

requestBody: null
validResponseCodes: null
测试用例:2

@Unroll
    @Test
    void "successfully_execute_invokeSNAPRestAPI_with_HttpRequest_optional_parameters"() {

        when:
        Object stepScript = loadScript([(RequestResponseMock.HTTP_RESPONSE_STATUS):
                                                HttpConstants.HTTP_RESPONSE_CODE_OK,
                                        (RequestResponseMock.HTTP_RESPONSE_CONTENT):
                                                RequestResponseMock.AUTHORIZE_APPROVED_RESULT,
                                       ])

        HttpRequest httpRequest = new HttpRequest(RequestResponseMock.SNAP_SERVER_URL_VALUE,
                HttpConstants.HTTP_METHODS.PUT.name(),
                HttpConstants.REQUEST_CONTENT_TYPE_JSON,
                HttpConstants.ACCEPT_TYPE_JSON
        )
        if(setOptionalParams) {
            httpRequest.setRequestBody(requestBody)
            httpRequest.setValidResponseCodes(validResponseCodes)
        }

        and:
        HttpClient httpClient = new HttpClient(stepScript)
        Map response = httpClient.invokeSNAPRestAPI(httpRequest)

        then:
        assert stepScript
        assert response
        assert response.get(HttpConstants.HTTP_RESPONSE_CODE) == HttpConstants.HTTP_RESPONSE_CODE_OK

        where:
        setOptionalParams | requestBody                                                   | validResponseCodes
        false             | JsonOutput.toJson(RequestResponseMock.NORMAL_CHANGE_PAYLOAD)  | VALID_RESPONSES
        true              | JsonOutput.toJson(RequestResponseMock.NORMAL_CHANGE_PAYLOAD)  | VALID_RESPONSES
        true              | EMPTY_STRING                                                  | VALID_RESPONSES
        true              | null                                                          | VALID_RESPONSES
        true              | JsonOutput.toJson(RequestResponseMock.NORMAL_CHANGE_PAYLOAD)  | null
        true              | JsonOutput.toJson(RequestResponseMock.NORMAL_CHANGE_PAYLOAD)  | []
    }
这些测试也通过,输出:

requestBody: {"description":"Change notes for new version:","short_description":"Deploy new version" }
if requestBody evaluated to true
validResponseCodes: [200, 201, 400]
if validResponseCodes evaluated to true

requestBody: 
validResponseCodes: [200, 201, 400]
if validResponseCodes evaluated to true

requestBody: null
validResponseCodes: [200, 201, 400]
if validResponseCodes evaluated to true

requestBody: {"description":"Change notes for new version:","short_description":"Deploy new version" }
if requestBody evaluated to true
validResponseCodes: null

requestBody: {"description":"Change notes for new version:","short_description":"Deploy new version" }
if requestBody evaluated to true
validResponseCodes: []
编辑:


那么,如果一个列表根本没有初始化(在上面的HttpRequest对象中),它(实际上计算为false),那么如何假设它将计算为false呢?这是因为Groovy强制它为false吗?

您是否在问为什么您的审阅者拒绝了您的代码?乍一看,您从不比较requestBody,而是使用它来发送请求。如果你认为这是一个很好的SO问题,那么请删减它以显示实际问题,并提供你看到的错误/堆栈跟踪。编辑原始问题以了解Groovy truth。
@Unroll
    @Test
    void "successfully_execute_invokeSNAPRestAPI_with_HttpRequest_optional_parameters"() {

        when:
        Object stepScript = loadScript([(RequestResponseMock.HTTP_RESPONSE_STATUS):
                                                HttpConstants.HTTP_RESPONSE_CODE_OK,
                                        (RequestResponseMock.HTTP_RESPONSE_CONTENT):
                                                RequestResponseMock.AUTHORIZE_APPROVED_RESULT,
                                       ])

        HttpRequest httpRequest = new HttpRequest(RequestResponseMock.SNAP_SERVER_URL_VALUE,
                HttpConstants.HTTP_METHODS.PUT.name(),
                HttpConstants.REQUEST_CONTENT_TYPE_JSON,
                HttpConstants.ACCEPT_TYPE_JSON
        )
        if(setOptionalParams) {
            httpRequest.setRequestBody(requestBody)
            httpRequest.setValidResponseCodes(validResponseCodes)
        }

        and:
        HttpClient httpClient = new HttpClient(stepScript)
        Map response = httpClient.invokeSNAPRestAPI(httpRequest)

        then:
        assert stepScript
        assert response
        assert response.get(HttpConstants.HTTP_RESPONSE_CODE) == HttpConstants.HTTP_RESPONSE_CODE_OK

        where:
        setOptionalParams | requestBody                                                   | validResponseCodes
        false             | JsonOutput.toJson(RequestResponseMock.NORMAL_CHANGE_PAYLOAD)  | VALID_RESPONSES
        true              | JsonOutput.toJson(RequestResponseMock.NORMAL_CHANGE_PAYLOAD)  | VALID_RESPONSES
        true              | EMPTY_STRING                                                  | VALID_RESPONSES
        true              | null                                                          | VALID_RESPONSES
        true              | JsonOutput.toJson(RequestResponseMock.NORMAL_CHANGE_PAYLOAD)  | null
        true              | JsonOutput.toJson(RequestResponseMock.NORMAL_CHANGE_PAYLOAD)  | []
    }
requestBody: {"description":"Change notes for new version:","short_description":"Deploy new version" }
if requestBody evaluated to true
validResponseCodes: [200, 201, 400]
if validResponseCodes evaluated to true

requestBody: 
validResponseCodes: [200, 201, 400]
if validResponseCodes evaluated to true

requestBody: null
validResponseCodes: [200, 201, 400]
if validResponseCodes evaluated to true

requestBody: {"description":"Change notes for new version:","short_description":"Deploy new version" }
if requestBody evaluated to true
validResponseCodes: null

requestBody: {"description":"Change notes for new version:","short_description":"Deploy new version" }
if requestBody evaluated to true
validResponseCodes: []
5. The Groovy Truth
Groovy decides whether a expression is true or false by applying the rules given below.

assert true
assert !false
5.2. Collections and Arrays
Non-empty Collections and arrays are true.

assert [1, 2, 3]
assert ![]