我是这个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["Content-Length"]).equals("0")
// not working:
assert ((com.eviware.soapui.support.types.StringList)messageExchange.responseHeaders["Content-Length"]) == 0
请帮我解决这个问题。
答案 0 :(得分: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["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
的列表,则只返回String
。 "0"
不是String
的列表,只是一个。
== 0
同样,当您致电list == 0
时,您正在测试list
是否为整数0
,而不是。{/ p>
messageExchange.responseHeaders["Content-Length"] == 0
不应该起作用,因为。 messageExchange.responseHeaders["Content-Length"]
会返回 List
String
s , ,而不是整数0
。
messageExchange.getResponse().getContentLength() == 0
有效,因为messageExchange.getResponse().getContentLength()
会将Content-Length
标头返回为long
整数值。
messageExchange.getResponse().getContentLength()
与获取列表的第一个值并转换为long
相同。看看这是如何工作的:Long.valueOf(messageExchange.responseHeaders["Content-Length"].get(0)) == 0
。