空手道加特林机:无法在空手道功能中使用对象字段
Karate-Gatling: Not able to use object fields inside Karate features
对于下面的加特林模拟
class DeviceSimulation extends Simulation {
var devices: List[Device] = List[Device]()
before {
// Preparing data.
devices = DataFetch.getDevices()
}
// Feed device
val devicesFeederCont: Iterator[Map[String, Device]] = Iterator.continually(devices.map(d => {
Map("device" -> d)
})).flatten
val devicesFeederToKarate: ScenarioBuilder = scenario("feederDeviceToKarate").exec(karateSet("device", session => session("device").as[Device]))
val Devices: ScenarioBuilder = scenario("Device")
.feed(devicesFeederCont)
.exec(devicesFeederToKarate)
.exec(karateFeature("classpath:features/device/Devices.feature"))
setUp(
Devices.inject(rampUsers(5).during(5 seconds))
).protocols()
}
我希望能够在我的功能中注入 Device
对象:
Feature: Device actions
Background:
* url 'https://server-host'
* print 'Device obj: ', device
Scenario: Device actions
Given path '/api/device/name/', device.name
When method GET
Then status 200
但是,尽管对于后台打印我得到:c.intuit.karate - [print] Device obj: Device(1234,989898989)
,对于 GET 请求我有:
GET /api/device/name/com.intuit.karate.graal.JsExecutable@333d7..
我提到 Device 只是一个案例 class,有两个字段:
case class Device(id: Int, name: String)
.
有没有办法在空手道功能中正确使用从馈线传递的对象?
现在我们只测试了传递给 Gatling 会话的原始值。如果将数据转换为 java.util.Map
,它可能会起作用。所以也许你最好的选择是在你的 data-object 上写一些 toMap()
函数。或者,如果您设法发出 JSON 字符串,则有一个 karate.fromString()
帮助器可能很有用。
所以请阅读此处的文档并找出有效的方法:https://github.com/karatelabs/karate/tree/master/karate-gatling#gatling-session
非常欢迎您贡献代码以改善事物的状态。
对于下面的加特林模拟
class DeviceSimulation extends Simulation {
var devices: List[Device] = List[Device]()
before {
// Preparing data.
devices = DataFetch.getDevices()
}
// Feed device
val devicesFeederCont: Iterator[Map[String, Device]] = Iterator.continually(devices.map(d => {
Map("device" -> d)
})).flatten
val devicesFeederToKarate: ScenarioBuilder = scenario("feederDeviceToKarate").exec(karateSet("device", session => session("device").as[Device]))
val Devices: ScenarioBuilder = scenario("Device")
.feed(devicesFeederCont)
.exec(devicesFeederToKarate)
.exec(karateFeature("classpath:features/device/Devices.feature"))
setUp(
Devices.inject(rampUsers(5).during(5 seconds))
).protocols()
}
我希望能够在我的功能中注入 Device
对象:
Feature: Device actions
Background:
* url 'https://server-host'
* print 'Device obj: ', device
Scenario: Device actions
Given path '/api/device/name/', device.name
When method GET
Then status 200
但是,尽管对于后台打印我得到:c.intuit.karate - [print] Device obj: Device(1234,989898989)
,对于 GET 请求我有:
GET /api/device/name/com.intuit.karate.graal.JsExecutable@333d7..
我提到 Device 只是一个案例 class,有两个字段:
case class Device(id: Int, name: String)
.
有没有办法在空手道功能中正确使用从馈线传递的对象?
现在我们只测试了传递给 Gatling 会话的原始值。如果将数据转换为 java.util.Map
,它可能会起作用。所以也许你最好的选择是在你的 data-object 上写一些 toMap()
函数。或者,如果您设法发出 JSON 字符串,则有一个 karate.fromString()
帮助器可能很有用。
所以请阅读此处的文档并找出有效的方法:https://github.com/karatelabs/karate/tree/master/karate-gatling#gatling-session
非常欢迎您贡献代码以改善事物的状态。