传递一组路径参数以确保放心-语法

时间:2019-02-09 20:50:29

标签: rest api testing endpoint rest-assured

我有以下端点:/ 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包含一些有用的信息

1 个答案:

答案 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))...