Вызывать функцию, только если проверка прошла успешно? - PullRequest
0 голосов
/ 12 июня 2018

Я хотел записать атрибут сеанса в файл, только если ответ вернул строку «Успех».

Я пытаюсь сделать это:

.check(substring("success").onSuccess(writeThisToFile(<my variable here>))

Я вижу, чтоэто не верно, как говорит IDE.Можно ли вызвать функцию в зависимости от результата проверки ответа?

Ответы [ 2 ]

0 голосов
/ 16 июня 2018

Это должно работать

 .asLongAs(session => ( YOUR CONDITION ) ) {
            exec(    http("Poll")  ) 
  }
0 голосов
/ 13 июня 2018

Для этого вы можете использовать метод .transform() на bodyString.Он принимает параметр функции типа String => T или (String, Session) => T и применяет его к телу ответа, поэтому в вашем случае это будет выглядеть так:

.check(
    bodyString.transform(
        (body: String, session: Session) => {
            if(body.contains("success")){
                File("/path/to/file")
                    .createFile()
                    .appendAll(session("attributeName").as[String])
            }
        }
    )
)

- отредактировано -

чтобы сохранить часть тела запроса в сеансе, вам нужно сгенерировать эту часть отдельно, сохранить в атрибуте сеанса и использовать при создании тела.Например, давайте предположим, что вы хотите отправить JSON, содержащий 2 поля: некоторое постоянное значение + текущую метку времени, а затем сохранить метку времени в файл, если ответ содержит «success»:

val exampleScenario =  scenario("Example")
    .exec(session => {
        session.set("timestamp", System.currentTimeMillis)
    })
    .exec(http("Send data")
        .post("http://example.com")
        .body(StringBody("""{"constant":123, "timestamp": ${timestamp}}"""))
        .asJSON
        .check(
            bodyString.transform(
                (body: String, session: Session) => {
                    if(body.contains("success")){
                        File("/path/to/file")
                            .createFile()
                            .appendAll(session("timestamp").as[String])
                    }
                }
            )
        )
    )
...