2016-06-21 10 views
2

Отказ от ответственности: Я не знаком с Scala, поэтому я, вероятно, делаю что-то глупое.Несоответствие типа: найдено Строка, требуется io.gatling.core.validation.Validation [String]

Мы используем Gatling для наших тестов производительности. Я в настоящее время пытается получить его отправить запрос POST на наш API, используя что-то вроде следующего:

exec(http("post request") 
    .post("http://ourApi") 
    .body(
     StringBody(
      session => """{ "myContent": "value" }""" // 1 
    ) 
) 
    .asJSON 
    .check(status.is(200)) 
) 

Как вы можете видеть, я использую функцию выражение для StringBody на линии, обозначенной // 1 , что должно быть возможным according to the Gatling documentation.

Когда я пытаюсь запустить, что, тем не менее, я получаю ошибку ZincCompiler на этой точной линии:

type mismatch; 
found : String("{ \"myContent\": \"value\" }") 
required: io.gatling.core.validation.Validation[String] 

Почему ожидает Validation[String]? В документации я вижу только строки, а также ...

+0

Нам нужно увидеть ваш импорт. Вы включили 'import io.gatling.core.Predef._'? –

+0

@Ivan Вы должны опубликовать это как ответ, а не комментарий, так как это, скорее всего, правильный. –

+0

Кажется, что это @IvanBalashov, угадайте, что настало время исправить мою сломанную IDE ... Любые указатели на то, что импортирует и как это каким-то волшебным образом преобразует мою строку в правильный тип? Мне бы хотелось узнать, как это работает в Scala ... – Vincent

ответ

1

На странице вы связаны говорит

Expression

Большинство Гатлинга методы DSL фактически принимает Expression параметров [T], который является типом псевдоним Сессия => Проверка [T].

Как получается, что тогда можно передать строки и другие значения?

Причина заключается в том, что существует неявное преобразование:

  • при передаче строки, он получает автомагический разобранным превратить их в выражениях благодаря Гатлинг EL компилятору.

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

Таким образом, проблема заключается в том, что неявное преобразование не получает срабатывает по какой-то причине. Из http://gatling.io/docs/2.2.2/session/validation.html#validation, вы можете попробовать:

  1. Добавить import io.gatling.commons.validation._.

  2. Если это не поможет, используйте Success("""{ "myContent": "value" }""") явно.

+0

Импорт должен быть «import io.gatling.commons.validation._' –

+0

@ZdenekF Вы правы, спасибо (для Gatling 2.2). –

Смежные вопросы