передать массив параметров пути, чтобы быть уверенным - синтаксис - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть следующая конечная точка: / move /: player /: контакты, на которые я могу разместить 1 или 2 контакта как таковые:

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();

, используя только один контакт, я могу быть уверен в следующем:

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

note: Как передать параметры в Rest-Assured содержит некоторую полезную информацию

1 Ответ

0 голосов
/ 11 февраля 2019

Ваш последний пример может работать, если вы измените имена параметров на что-то вроде

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