如何在空手道框架中使用“faker”库?

问题描述 投票:0回答:4

我想使用“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
4个回答
5
投票

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

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

获取最新版本的依赖项单击此处

在 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包的类和方法


3
投票

空手道不支持 NPM 或

require
关键字。对于复杂的自定义逻辑,建议使用 Java interop。

我的建议是你应该找到一个可以完成“faker”功能的 Java 库并将其集成。

编辑:对于那些寻找与其他代码集成的快速方法的人,我建议查看 CLI 选项。您可以通过命令行调用任何操作系统进程,如果它通过系统 out / err 返回数据(理想情况下是字符串或 JSON),您可以在 Karate 中捕获它。所以这意味着,如果您可以在本地运行节点程序,您就可以从空手道中使用它。

参考:https://stackoverflow.com/a/62911366/143475

EDIT2:请参阅使用 faker Java lib 的示例here


2
投票

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


1
投票

感谢您的回复和建议,尝试了以下并且工作正常。

在 karate-config.js 中:

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

......

config.faker = faker;

在sample.json中:

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

© www.soinside.com 2019 - 2024. All rights reserved.