Intereting Posts
Как я могу использовать модель представления, с sqlite и широковещательным приемником для обновления пользовательского интерфейса? В чем разница между «const» и «val»? Android Studio (Kotlin) GsonBuilder.registerTypeAdapter () дает 2 ошибки Как вызвать методы расширения вне класса, в котором они определены? Тестирование модуля Kotlin для функциональных параметров и объектов Kotlin klaxon проанализирует направление Google Api Kotlin – Несоответствие типа: Обязательно: String, Найдено: () -> String (Java + Kotlin) Autowiring: ожидается не менее 1 бит, который квалифицируется как кандидат на автоподключение для этой зависимости Разница между методами OnclickListener в Котлине Как сделать компиляциюKotlin dependsOn compileJava в gradle Как инициировать массив строк в Котлине? Лучший способ применить преобразование к каждому элементу в списке одновременно в Котлине Поддержка градиента протокола Buffer для Kotlin Android не работает? RX java / Android Как достичь этого тоста на каждом клике с помощью оператора debounce Как создать .jar (Создать исполняемый файл) встроенного сервера Ktor

restAssured – невозможно обработать почтовый метод

коллеги-штабелевы 🙂

Я был на время, чтобы сделать почтовый вызов, используя API Gmail. Пробовал использовать createDraft и createLabel. Теперь, я думаю, я нашел, как это сделать правильно (в основном), но я получаю эту ошибку:

java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <400>. 

Я понимаю, что эта ошибка возникает из-за неправильного запроса.

Могли бы вы, ребята, помочь мне с этим? Вот мой код:

 import io.restassured.RestAssured.* import io.restassured.http.ContentType import io.restassured.matcher.RestAssuredMatchers.* import org.hamcrest.Matchers.* import org.testng.annotations.Test class RestAPIAutoTestPost { @Test fun createLabelInGoogleMail() { RestAssured.baseURI = "https://www.googleapis.com/gmail/v1/users/me" val accessToken = "ya29.Glw7BEv6***" val jsonAsMap = HashMap<String, Any>() jsonAsMap.put("id", "labelAPITestNameID") jsonAsMap.put("labelListVisibility", "labelShow") jsonAsMap.put("messageListVisibility", "show") jsonAsMap.put("messagesTotal", "0") jsonAsMap.put("messagesUnread", "0") jsonAsMap.put("name", "labelAPITestName") jsonAsMap.put("threadsTotal", "0") jsonAsMap.put("threadsUnread", "0") jsonAsMap.put("type", "user") given(). contentType(ContentType.JSON). body(jsonAsMap). `when`() post("/labels?access_token=$accessToken"). then(). statusCode(200) } } 

Я полагаю, что неправильно использую HashMap или я использую некоторые неправильные поля тела. Я только начал изучать restAssured, поэтому прошу прощения за новый вопрос.

Благодаря!

PS Я бы очень признателен за любую помощь в методах Post и поместить данные в тело

Я думаю, что ваше использование RestAssured и HashMap верное. Я думаю, что вы получаете 400 из этого API, потому что вы указываете свойство id . Играя с этим в Google API Explorer, я смог создать 400 ошибок, выполнив это. Согласно документации , единственное, что вам нужно указать для POST/Create это: labelListVisibility , messageListVisibility и name . id возвращается вам как часть ответа.

Хорошей особенностью в RestAssured является то, что вы можете зарегистрировать то, что он отправляет или получает, когда есть ошибка или все время.

Зарегистрировать все заявки:

 given().log().all() 

Записать все ответы:

 `when`().log().all() 

Или просто, когда проверки не выполняются:

 `when`().log().ifValidationFails() 

Использование этого даст вам более точную причину, по которой ваше взаимодействие с API терпит неудачу, потому что оно покажет все, что отправляет Google. Поэтому мы можем точно убедиться, что я прав относительно id .

И поскольку вы, кажется, используете Kotlin для этого, вы можете воспользоваться его превосходными многострочными строковыми возможностями и просто создать полезную нагрузку JSON вручную:

 val body = """ { "labelListVisibility": "labelShow", "messageListVisibility": "show", "name": "ThisIsATest" } """