在您的代码中:
// 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
该表达式messageExchange.responseHeaders["Content-Length"]
返回一个StringList
[see doc here],它是一个ArrayList<String>
.
它的内容可能是几个Strings
,比如 ( "abc"
, "def"
, "ghi"
)。
contains("0")
:
这样,当您调用 时list.contains("abc")
,您是在询问是否"abc"
是列表的元素之一。您的Content-Length
标题可能是一个包含一个元素的列表,例如 ( "0"
)。这就是为什么list.contains("0")
返回true
,因为它String
"0"
是列表中的元素之一。
equals("0")
:
因此,当您调用: 时list.equals(something)
,它只会true
在something
传递的 as 参数也是String
s 列表时返回。"0"
不是String
s 的列表,它只是一个。
== 0
:
同样,当您打电话时,list == 0
您正在测试是否list
是 integer 0
,而不是。
messageExchange.responseHeaders["Content-Length"] == 0
不应该工作,因为。messageExchange.responseHeaders["Content-Length"]
返回s 的a List
,String
它不同于整数0
。
messageExchange.getResponse().getContentLength() == 0
有效,因为messageExchange.getResponse().getContentLength()
将Content-Length
标头作为long
整数值返回。
messageExchange.getResponse().getContentLength()
与获取列表的第一个值并转换为long
. 看看这将如何工作:Long.valueOf(messageExchange.responseHeaders["Content-Length"].get(0)) == 0
。