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