如何使用超级测试发送具有相同密钥的多个值?

问题描述 投票:0回答:1

在我的测试中,我需要模拟发送复选框表单数据。在带有复选框的普通 HTML 表单中,如果选中表单框,则会发送相应的键、值。考虑一个询问用户最喜欢的颜色的表单。提交的数据如下所示:

color=red
color=blue
color=green

我相信这是正确的。

在express中,我注销了req.body.color,并且正如预期的那样,当使用邮递员发送请求时,我得到了一个[红,绿,蓝]数组。但是,如果我尝试在超级测试中发送数据,它只会获取最后发送的键值对。我已经用

.type('form').send({color: 'red', color: 'green', color: 'blue'})
在超级测试中发送了表单数据,但是当它到达服务器时,req.body.color 只是 ['blue']

如何在超级测试中发送具有相同键但不同值的多个键值对,并且全部发送?

javascript node.js testing supertest
1个回答
0
投票

您不能在单个对象中设置相同的键。如果您尝试在单个对象中设置相同的键,那么它将用新的键值覆盖旧的键值。

如果您想在对象中的单个键中发送多个值,那么您可以将“颜色”作为数组

.type('form').send({color: ['red','green','blue']})

如果你不想制作数组那么你也可以尝试formdata

let formData = new FormData();
formData.append('color', 'red');
formData.append('color', 'red2');
formData.append('color', 'red3');
for (const pair of formData.entries()) {
  console.log(pair[0], pair[1]);
}

Output: 
"color" "red"
"color" "red2"
"color" "red3"
© www.soinside.com 2019 - 2024. All rights reserved.