需要在独立的 karate.jar 中使用 JavaScript 检查给定目录的文件夹

我需要使用独立 karate.jar 中的 JavaScript 检查给定目录的文件夹、文件和文件详细信息(文件大小),并且此验证是测试自动化脚本的一部分。

我知道这可以通过在 Maven 中编写自定义 Java 包并在空手道脚本的 JavaScript 中使用它们来实现。

如何在独立的 karate.jar 中实现这一点。将目录路径和目录名称作为两个参数传递给 JavaScript 函数,该函数验证给定的目录名称是否存在于提供的目录路径中。它是处理文件系统对象的一种。

我了解空手道仅支持读取文件,而不支持读取目录中的文件夹名称和文件名/文件详细信息。读取空手道脚本中的文件:https://intuit.github.io/karate/#reading-files 允许的文件扩展名是:.json、.xml、.yaml、.csv、.txt、.feature

请指导我如何在空手道中使用 Javascript 来实现这一点?

谢谢钱德拉。


人到中年有点甜
浏览 85回答 1
1回答

慕田峪4524236

是的,这对于独立 JAR 来说更困难。以下是一些建议:编写一个小 JAR 文件(一次性),您可以将其包含在独立项目中karate.exec()通过例如在 Windows 上使用操作系统命令* def homePath = karate.exec('cmd /c echo %HOMEPATH%')经过一些工作,您可以创建使用 JVM 库的纯 JS 脚本,但是您需要很好地了解 Java 中存在的内容,并且这些脚本很难调试,因此我不推荐这种方法。我在下面举一个例子:* def findFile = """function(file, condition) {  var root = new java.io.File(file);  function recurse(file) {    var list = file.listFiles();    for (var i = 0; i < list.length; i++) {      var f = list[i];      if (f.directory) {        // karate.log('recurse:', f);        return recurse(f);      } else {        var path = f.path;        // karate.log('scan:', path);        if (condition(path)) {          karate.log('*** found:', path);          return f;        }      }    }  }    return recurse(root);}"""* def filter = function(x){ return x.contains('/test-') && x.endsWith('.log') }* def found = findFile('.', filter)* print 'found:', found
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript