t.me/atinfo_chat Telegram группа по автоматизации тестирования

kotlin. rest assured. шаринг респонса между степами

rest-assured
kotlin
java
Теги: #<Tag:0x00007f9c4c6ee930> #<Tag:0x00007f9c4c6ee7f0> #<Tag:0x00007f9c4c6ee6b0>

(5am) #1

Доброго времени суток.
Есть некий тест, в данном виде тест рабочий

package steps

import io.restassured.builder.RequestSpecBuilder
import io.restassured.specification.RequestSpecification
import net.thucydides.core.annotations.Step

open class CommonSteps {

    private val userRelativeUri = "user/"

    @Step
    private fun getRequestSpec() : RequestSpecification {
        return RequestSpecBuilder()
            .setBaseUri("https://api.site.ru/")
            .build()
    }

    @Step
    protected fun getUserByIdRequestSpec(id: Int) : RequestSpecification {
        return getRequestSpec().basePath(userRelativeUri + id)
    }
}
package steps

import io.restassured.RestAssured.given
import io.restassured.response.Response
import model.expected.User
import net.thucydides.core.annotations.Step
import org.hamcrest.Matchers.`is`
import org.hamcrest.Matchers.equalTo

open class UserSteps : CommonSteps() {

    private lateinit var response: Response

    @Step
    open fun getUserByIdAsWebClient(id: Int) {
        response = given().spec(getUserByIdRequestSpec(id)).get()
    }

    @Step
    open fun requestedUserShouldBePresentInResponse(user: User) {
        response.then()
            .body("id", `is`(user.id))
            .body("title", equalTo(user.title))
    }
}

Тест:

import model.expected.User
import org.junit.runner.RunWith
import net.serenitybdd.junit.runners.SerenityRunner
import net.thucydides.core.annotations.Steps
import org.junit.Test
import steps.UserSteps

@RunWith(SerenityRunner::class)
class CatalogUser {

    @Steps
    lateinit var userSteps : UserSteps

    @Test
    fun successGetUserById() {
        val user = User(167442, "Bill")
        userSteps.getUserByIdAsWebClient(user.id)
        userSteps.requestedUserShouldBePresentInResponse(user)
    }
}

Есть проблема - как избавиться от сохранения респонса в переменную ?
При использовании Java - респонс шарится между тестами автоматом и последний ответ всегда доступен через then()
В котлине - нет, если убрать переменную response, то при обращении к then() получаем NPE