1

我是这个 SOAP UI 的新手。我需要测试响应正文是否为空。

你能告诉我如何解决吗?

我的想法是content-length使用断言脚本检查响应,但它不适用于equals().

contains()正在工作但没有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["C‌​ontent-Length"]).equals("0") 
// not working:
assert ((com.eviware.soapui.support.types.StringList)messageExchange.responseHeaders["C‌​ontent-Length"]) == 0 

请帮我解决问题。

4

1 回答 1

1

在您的代码中:

// 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["C‌​ontent-Length"]).equals("0") 
// not working:
assert ((com.eviware.soapui.support.types.StringList)messageExchange.responseHeaders["C‌​ontent-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),它只会truesomething传递的 as 参数也是Strings 列表时返回。"0"不是Strings 的列表,它只是一个。

== 0

同样,当您打电话时,list == 0您正在测试是否list是 integer 0,而不是。

messageExchange.responseHeaders["Content-Length"] == 0不应该工作,因为。messageExchange.responseHeaders["Content-Length"]返回s 的a ListString不同于整数0

messageExchange.getResponse().getContentLength() == 0有效,因为messageExchange.getResponse().getContentLength()Content-Length标头作为long整数值返回。

messageExchange.getResponse().getContentLength()与获取列表的第一个值并转换为long. 看看这将如何工作:Long.valueOf(messageExchange.responseHeaders["Content-Length"].get(0)) == 0

于 2013-05-21T06:17:31.377 回答