空手道加特林机:无法在空手道功能中使用对象字段

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

非常欢迎您贡献代码以改善事物的状态。