【问题标题】:How to use 'faker' libraries in karate framework?如何在空手道框架中使用“faker”库?
【发布时间】:2018-08-30 14:52:36
【问题描述】:

我想使用“faker”库在 JSON 文件中生成假数据,如下所示。

在 karate-config.js 中,我执行以下操作:

var faker = require('faker');

在 sample.json 中:

{
    'firstName': '#(faker.name.firstName)'
    'city'     : '#(faker.address.city)'
}

但我遇到了类似“在 'karate-config.js' 中找不到 'require' 关键字”这样的错误

请帮忙。

【问题讨论】:

标签: javascript karate


【解决方案1】:

Karate 不支持 NPM 或 require 关键字。对于复杂的自定义逻辑,建议使用 Java 互操作。

我的建议是你应该找到一个 Java 库来做“faker”所做的事情并集成它。

【讨论】:

  • 感谢您的回复和建议,在下面尝试并正常工作。在 karate-config.js 中: var faker = Java.type('.FakerClass'); ...... config.faker = 伪造者;在 sample.json: > { 'name': '#(faker.address.city)' }
  • 有计划在空手道中支持 npm 吗?
  • @PavelBiryukov 这不是我们的优先事项。我们使用 Graal 作为 JS 引擎,它在技术上可以运行 Node.JS - 所以如果社区尝试尝试,谁知道:)
【解决方案2】:

首先在您的 pom.xml 中添加以下依赖项

<dependency>
        <groupId>com.github.javafaker</groupId>
        <artifactId>javafaker</artifactId>
        <version>1.0.2</version>
</dependency>

最新版本的依赖click here

在 karate-config.js 中使用以下代码:

config.faker = Java.type('com.github.javafaker.Faker');

在功能文件中使用以下代码:

* def fakerObj =  new faker()
* def fName = fakerObj.name().firstName()
* def lName = fakerObj.name().lastName()
* def mailId = fName+'.'+lName+'@test.com'

您可以在 JSON 正文中使用相同的内容,如下所示:

"emailAddress":"#(mailId)",
"firstName":"#(fName)",
"lastName":"#(lName)",
   "address":{
          line1:"#(fakerObj.address().streetAddress())"}

faker包的类和方法请click here

【讨论】:

    【解决方案3】:

    据我所知,karate 仅支持基于 java 的依赖项。因此,请尝试为您的 JS 库找到一个 Java 等效项。

    【讨论】:

      【解决方案4】:

      感谢您的回复和建议,在下面尝试并正常工作。

      在 karate-config.js 中:

      var faker = Java.type('.FakerClass');

      ......

      config.faker = 伪造者;

      在 sample.json 中:

      { '名称': '#(faker.address.city)' }

      【讨论】:

      • 你是如何在空手道项目中使用 faker 'npm' 库的?你是如何设法将 faker 依赖安装到你的空手道项目中的?
      猜你喜欢
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多