#scala #soap #wsdl #load-testing #gatling
#scala #soap #wsdl #нагрузочное тестирование #gatling
Вопрос:
Я хочу проверить значение, которое возвращается в responsbody из веб-службы SOAP.
Вот пример ResponseBody из веб-службы:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns5:getUserResponse xmlns:ns5="http://<someservice>" xmlns:ns3="java:com.mywebservice">
<ns3:resultCode>0</ns3:resultCode>
</S:Body>
</S:Envelope>
У меня есть следующее:
....//snipped for brevity
.check(regex("""<ns3:resultCode>(d*)</ns3:resultCode""").saveAs("resCode"))
.check("""${resCode}""".in(0 to 200))
....//snipped for brevity
Я получаю сообщение об ошибке о том, что .in
недоступно для строкового типа, но я не уверен, как еще проверить, что ответ xml содержит определенные значения.
Любая помощь была бы потрясающей, и все остальное, что мне нужно, я должен более чем с радостью выполнить. Заранее спасибо.
РЕДАКТИРОВАТЬ: я забыл упомянуть, что я использую gatling версии 2.0.0-M3a — заранее спасибо.
Ответ №1:
С текущим 2.0.0-МОМЕНТАЛЬНЫМ СНИМКОМ это:
.check(regex("""<ns3:resultCode>(d*)</ns3:resultCode""")
.transform(_.toInt)
.in(0 to 200))
С 2M3a это:
.check(regex("""<ns3:resultCode>(d*)</ns3:resultCode""")
.transform(_.map(_.toInt))
.in(0 to 200))
Комментарии:
1.Я забыл упомянуть, что я использую 2.0.0-M3a. Я попробовал приведенный выше код, и это привело к:
38: error: value toInt is not a member of Option[String]
.check(regex("""resultCode>(d )<""").transform(_.toInt).in(0 to 200))
2. Большое вам спасибо, это сработало. Я пробовал так много других способов, которые просто стали смешными.