【问题标题】:How to call a particular javascript function from .js file in karate feature file如何从空手道功能文件中的 .js 文件调用特定的 javascript 函数
【发布时间】:2021-10-05 13:43:16
【问题描述】:

假设我在 Utility js 文件中保存了以下函数。

function getCurrentDate(){
return 'date';
}

function getMonth(){

return 'Oct';
}

请帮助我如何在功能文件中访问这些方法。

我尝试了以下代码,但它不起作用。

* def fun = call read('Utility.js')

* def result = getData()
or
* def result = fun.getData()

【问题讨论】:

    标签: karate


    【解决方案1】:

    在空手道中,一个 JS 文件只能包含一个函数,它不需要名称,请仔细查看示例。

    我真的不建议将多个函数合并到一个文件中,这只会让事情变得更难维护。但如果你真的坚持,方法如下:

    function() {
      return {
        getCurrentDate: function(){ return 'date' },
        getMonth: function(){ return 'month' }
      }
    }
    

    编辑:更好的答案在这里:https://stackoverflow.com/a/49384760/143475

    【讨论】:

    • 但是维护太多的js文件会比较开销。就可读性而言,提供的解决方案也不是一个好方法。
    • 只需创建一个特性文件,该文件具有您想要声明的尽可能多的内联 JS 函数并重复使用它。完成!
    • 功能文件也可以。但是,我们有没有办法从具有许多 java 脚本函数的特征文件中重用特定函数?我检查了文档,但无法弄清楚。
    • 真的不确定您关心的是什么,根据您想要重用的内容拆分您的功能。如果声明了一些 JS 并且没有使用,那没关系,你为什么担心?
    • 您可以致电def functions = call read('classpath:reusable.js') 并在同一功能文件中尝试def x = functions.getCurrentDate( )。希望这有助于其他人试图弄清楚如何调用 javascript 文件中的自定义函数。
    【解决方案2】:
    * def data = karate.read('classpath:<path>/getRandomString.js')(<inputToTheFunctionIfAny>);
    

    上面的代码有效。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多