我有以下端点:/ move /:player /:pins,我可以这样张贴1或2个pins:
do_post "http://localhost:${PORT}/move/${PLAYER1}/1"
do_post "http://localhost:${PORT}/move/${PLAYER2}/5,6"
这是因为端点包含以下逻辑:
int[] pins = Arrays.stream(request.params("pins").split(",")).mapToInt(Integer::parseInt).toArray();
仅需1个引脚,我就可以放心地进行以下操作:
given().when().post("/move/{firstPlayer}/{pinNum}", PLAYER_SIX, 1)...
我如何为两个引脚做类似的事情?注意:目前,此硬编码版本有效:
given().when().post("/move/{firstPlayer}/3,4", PLAYER_THREE)...
我尝试过的事情:
int[] arr = new int[2];
arr[0] = 8;
arr[1] = 9;
given().when().post("/move/{firstPlayer}/{pinNum}", PLAYER_SIX, arr)...
given().when().post("/move/{firstPlayer}/{pinNum}", PLAYER_SIX, {3, 4})...
我也拼命尝试
given().when().post("/move/{firstPlayer}/{pinNum},{pinNum}", PLAYER_SIX, 3, 4)...
given().when().post("/move/{firstPlayer}/{{pinNum},{pinNum}}", PLAYER_SIX, 3, 4)...
注意:How to pass parameters to Rest-Assured包含一些有用的信息
答案 0 :(得分:0)
如果将参数名称更改为类似的内容,则您的上一个示例可以工作
given().when().post("/move/{firstPlayer}/{pinNum1},{pinNum2}", PLAYER_SIX, 3, 4)...
否则,您可以创建一个辅助方法:
public static String toParamString(int... values) {
int iMax = values.length - 1;
if (iMax == -1) {
return "";
}
StringBuilder b = new StringBuilder();
for (int i = 0; ; i++) {
b.append(values[i]);
if (i == iMax) {
return b.toString();
}
b.append(",");
}
}
并像这样使用它:
given().when().post("/move/{firstPlayer}/{pinNum}", toParamString(1, 2, 3, 4))...