如何使用SOAP UI测试响应内容类型

时间:2013-05-21 05:48:00

标签: java rest soap soapui resteasy

我是这个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 

请帮我解决这个问题。

1 个答案:

答案 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["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)时,如果作为参数传递的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