在您的代码中:
// 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 参数也是Strings 列表时返回。"0"不是Strings 的列表,它只是一个。
== 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。