如何解决如何在加特林将地图列表传递到鹅卵石模板?
在加特林有Pebble模板的官方文档:https://gatling.io/2018/11/06/gatling-3-pebble-templating/
最后,您可以看到代码:
{% for child in children %}
{
"id": {{child.id}},"name": "{{child.name}}"
}{% if loop.last %}{% else %},{% endif %}
{% endfor %}
这意味着children
变量是一个列表,其中包含带有键id
和name
的映射
但是如何创建这样的列表并让Pebble知道呢?
当前,我有一种用于创建地图列表的方法:
def getArray(count: Integer): mutable.MutableList[Map[String,String]] = {
var array = mutable.MutableList[Map[String,String]]()
for (i <- 0 until count) {
array += Map(
"UniqueString" -> UUID.randomUUID.toString,"RandomNumber" -> (Random.nextInt(10000) + 10000).toString,"contentId" -> UUID.randomUUID.toString
)
}
array
}
我有一个供料器:
val elementsFeeder = Iterator.continually(Map(
"elements" -> getArray(documentsMultiple)
))
我照常喂它:
def archive = repeat(1){
feed(elementsFeeder)
.exec(
.......
我的卵石模板如下:
[
{% for element in elements %}
Debugging info <element>: {{element}}
{"name": "{{element.UniqueString}}","value": "{{element.RandomNumber}}"}{% if loop.last %}{% else %},{% endif %}
{% endfor %}
]
但是当调试行看起来像这样时,我看到的不是引号和值,而是引号之间只有空白:
Debugging info <element>: Map(UniqueString -> 81a92aeb-3966-43ff-8c42-1e0e93ace3a4,RandomNumber0To100000 -> 11775,contentId -> 436701db-d66b-4819-b33e-3e455dbe19fc)
即使我通过在新的Map声明后添加.asJava
来更改地图生成以将其转换为Java的地图,我仍然会看到空白并显示以下输出:
Debugging info <element>: {UniqueString=119593c6-e526-4cca-a2d5-34d57bbfb22d,RandomNumber0To100000=16945,contentId=57385850-670b-484b-96e6-a1ec05c568ac}
解决方法
Pebble是一个Java库,可用于Java集合,而不是Scala集合。
从加特林(Gatling)3.4.0开始,存在一些缺点:
- 我们不会将Scala Maps包装到Java中
- 我们不深度包装/转换会话内容,仅根元素
现在尝试使用Java集合。
,要使用pebble从地图中获取值,您应该像常规的Java地图一样访问它:
{% for element in elements %}
{"name": "{{element.get("UniqueString"}}","value": "{{element.get("RandomNumber")}}"}{% if loop.last %}{% else %},{% endif %}
{% endfor %}
要创建供料器,我使用2种方法。其中一个返回java.util.HashMap
的新实例,第二个创建这些映射的java.util.ArrayList
。然后,我可以创建Feeder:
val elementsFeeder = Iterator.continually(Map(
"elements" -> getJavaArray(10)
))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。