在我的测试中,我需要模拟发送复选框表单数据。在带有复选框的普通 HTML 表单中,如果选中表单框,则会发送相应的键、值。考虑一个询问用户最喜欢的颜色的表单。提交的数据如下所示:
color=red
color=blue
color=green
我相信这是正确的。
在express中,我注销了req.body.color,并且正如预期的那样,当使用邮递员发送请求时,我得到了一个[红,绿,蓝]数组。但是,如果我尝试在超级测试中发送数据,它只会获取最后发送的键值对。我已经用
.type('form').send({color: 'red', color: 'green', color: 'blue'})
在超级测试中发送了表单数据,但是当它到达服务器时,req.body.color 只是 ['blue']
如何在超级测试中发送具有相同键但不同值的多个键值对,并且全部发送?
您不能在单个对象中设置相同的键。如果您尝试在单个对象中设置相同的键,那么它将用新的键值覆盖旧的键值。
如果您想在对象中的单个键中发送多个值,那么您可以将“颜色”作为数组
.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"