问题
I am new to this SOAP UI . I got a requirement to test if the response body is not empty .
Can you please tell me how to solve.
My idea was to check the content-length
of the response using assertion script but it is not working for equals()
.
contains()
is working but not equals
:
// works:
assert ((com.eviware.soapui.support.types.StringList)messageExchange.responseHeaders["Content-Length"]).contains("0")
// not working:
assert ((com.eviware.soapui.support.types.StringList)messageExchange.responseHeaders["Content-Length"]).equals("0")
// not working:
assert ((com.eviware.soapui.support.types.StringList)messageExchange.responseHeaders["Content-Length"]) == 0
Please help me to solve the issue.
回答1:
In your code:
// works:
assert ((com.eviware.soapui.support.types.StringList)messageExchange.responseHeaders["Content-Length"]).contains("0")
// not working:
assert ((com.eviware.soapui.support.types.StringList)messageExchange.responseHeaders["Content-Length"]).equals("0")
// not working:
assert ((com.eviware.soapui.support.types.StringList)messageExchange.responseHeaders["Content-Length"]) == 0
The expression messageExchange.responseHeaders["Content-Length"]
returns a StringList
[see doc here], which is a ArrayList<String>
.
It's content would be something like several Strings
, like ("abc"
, "def"
, "ghi"
).
contains("0")
:
This way, when you call list.contains("abc")
, you are asking if the "abc"
is one of the elements of the list. Your Content-Length
header is probably a list with one element, like ("0"
). That's why list.contains("0")
returns true
, because the String
"0"
is one of the elements on the list.
equals("0")
:
So, when you call: list.equals(something)
, it will only return true
if the something
passed as parameter is a list of String
s as well. "0"
is not a list of String
s, it is just one.
== 0
:
Same way, when you call list == 0
you are testing if list
is the integer 0
, which is not.
messageExchange.responseHeaders["Content-Length"] == 0
should not work because. messageExchange.responseHeaders["Content-Length"]
returns a List
of String
s, that is different than the integer number 0
.
messageExchange.getResponse().getContentLength() == 0
works because messageExchange.getResponse().getContentLength()
returns the Content-Length
header as a long
integer value.
messageExchange.getResponse().getContentLength()
is the same as getting the first value of the list and converting to long
. Look how this will work: Long.valueOf(messageExchange.responseHeaders["Content-Length"].get(0)) == 0
.
来源:https://stackoverflow.com/questions/16662959/how-to-test-the-response-content-type-using-soap-ui