использование файла Json в Rest-assured для полезной нагрузки

У меня есть огромный файл JSON для POST в качестве полезной нагрузки вызова rest api для целей тестирования. Я пробовал что-то вроде:

    public void RestTest() throws Exception {
    File file = new File("/Users/bmishra/Code_Center/stash/experiments/src/main/resources/Search.json");
    String content = null;

    given().body(file).with().contentType("application/json").then().expect().
            statusCode(200).
            body(equalTo("true")).when().post("http://devsearch");


}

и получите ошибку как:

java.lang.UnsupportedOperationException: Internal error: Can't encode /Users/bmishra/Code_Center/stash/experiments/src/main/resources/Search.json to JSON.

Я могу запустить, прочитав файл и передав тело в виде строки, и это работает, но я вижу, что могу напрямую передать объект файла, и это не работает.

После достаточного исследования кажется, что это не работает. Я открыл проблему с уверенностью. https://github.com/jayway/rest-assured/issues/674


person Bhaskar Mishra    schedule 12.04.2016    source источник
comment
просто прочтите из файла и отправьте прочитанное содержимое в синтаксический анализатор.   -  person Rugal    schedule 12.04.2016


Ответы (2)


После публикации вопроса с командой успокойтесь. У меня есть исправление. Я протестировал исправление, и теперь проблема решена.

Сообщение от успокоенного:

Сейчас это должно быть исправлено, поэтому я развернул новый снимок, который должен решить эту проблему. Попробуйте версию 2.9.1-SNAPSHOT после добавления следующего репозитория Maven:

<repositories>
        <repository>
            <id>sonatype</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <snapshots />
        </repository>
</repositories>

Для получения дополнительной информации: https://github.com/jayway/rest-assured/issues/674#issuecomment-210455811

person Bhaskar Mishra    schedule 15.04.2016

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

public String generateStringFromResource(String path) throws IOException {

    return new String(Files.readAllBytes(Paths.get(path)));

}

Итак, в вашем примере:

@Test
public void post() throws IOException {

   String jsonBody = generateStringFromResource("/Users/bmishra/Code_Center/stash/experiments/src/main/resources/Search.json")

    given().
            contentType("application/json").
            body(jsonBody).
    when().
            post("http://dev/search").
    then().
            statusCode(200).
            body(containsString("true"));
}
person Luke D. Smith    schedule 13.04.2016
comment
Да, я могу отправить содержимое файла в виде строки, но это еще один шаг. Если я прочитал определение метода, мне кажется, что он предоставляет способ передать файловый объект. Я хочу использовать его, так как он делает код чище. - person Bhaskar Mishra; 14.04.2016
comment
Это дополнительный шаг в вашем коде, но с точки зрения производительности он, вероятно, на самом деле дешевле, чем использование REST-гарантированного кодирования файла. Последние внесенные вами изменения должны соответствовать тому, что я вижу в javadocs, правильно ли сформирован ваш json-контент? - person Luke D. Smith; 14.04.2016
comment
: Да последний код работает. Мне все еще интересно, почему методы с обеспечением покоя не принимают файл в качестве входного объекта и не вызывают ошибку. Я написал общий метод, чтобы убедиться, что для каждого теста, который у меня нет, преобразование строк выполняется, и он отлично работает. - person Bhaskar Mishra; 14.04.2016
comment
Рад, что это работает, вы можете задать этот вопрос ребятам, уверенным в REST, прямо через их страницы. - person Luke D. Smith; 14.04.2016