Я работаю над каркасом тестирования Гатлинга, параметры которого можно параметризировать с помощью внешних объектов конфигурации. Один из вариантов использования, который у меня есть, заключается в том, что может быть ноль или более проверок селектора CSS, которые необходимо сохранить в переменных. В моем объекте конфигурации я реализовал это как Map[String,(String, String)]
, где ключ - это имя переменной, а значение - селектор css из двух частей.
Я борюсь с тем, как динамически собратьпроверить. Вот что я получил до сих пор:
val captureMap: Map[String, (String, String)] = config.capture
httpRequestBuilder.check(
captureMap.map((mapping) => {
val varName = mapping._1
val cssSel = mapping._2
css(cssSel._1, cssSel._2).saveAs(varName)
}).toArray: _* // compilation error here
)
Я получаю ошибку:
Error:(41, 10) type mismatch;
found : Array[io.gatling.core.check.CheckBuilder[io.gatling.core.check.css.CssCheckType,jodd.lagarto.dom.NodeSelector,String]]
required: Array[_ <: io.gatling.http.check.HttpCheck]
}).toArray: _*
очевидно, мне нужно превратить мой CheckBuilder
в HttpCheck
, поэтомукак мне это сделать?
Обновление :
Мне удалось заставить его работать, введя переменную типа HttpCheck и вернув ее в следующей строке:
httpRequestBuilder.check(
captureMap.map((mapping) => {
val varName = mapping._1
val cssSel = mapping._2
val check:HttpCheck= css(cssSel._1, cssSel._2).saveAs(varName)
check
}).toArray: _*
)
Хотя это работает, это ужасно ужасно. Можно ли это улучшить?