当前位置: 首页 > 知识库问答 >
问题:

空手道空手道配置。js不是js函数

仇高韵
2023-03-14

我正在尝试使用空手道进行e2e测试,并已从最低设置开始。我想在空手道配置中创建一些配置项。js用于测试,但karate报告该文件不是js函数,因此测试无法获取配置:

Warning: Nashorn engine is planned to be removed from a future JDK release
12:16:35.264 [Test worker] WARN com.intuit.karate - not a js function or feature file: read('classpath:karate-config.js') - [type: NULL, value: null]
---------------------------------------------------------
feature: classpath:karate/insurer.feature
scenarios:  1 | passed:  0 | failed:  1 | time: 0.0163
---------------------------------------------------------
HTML report: (paste into browser to view) | Karate version: 0.9.1
file:/Users/srowatt/dev/repos/api/price-service/build/surefire-reports/karate.insurer.html
---------------------------------------------------------


-unknown-:4 - javascript evaluation failed: priceBaseUrl, ReferenceError: "priceBaseUrl" is not defined in <eval> at line number 1
org.opentest4j.AssertionFailedError: -unknown-:4 - javascript evaluation failed: priceBaseUrl, ReferenceError: "priceBaseUrl" is not defined in <eval> at line number 1

这是我的karate-config.js

function fn() {

    return {
        priceBaseUrl: "http://localhost:8080"
    };
}

这是我的保险公司。功能测试:

Feature: which creates insurers

Background:
  * url priceBaseUrl
  * configure logPrettyRequest = true
  * configure logPrettyResponse = true

Scenario: basic roundtrip 

# create a new insurer
Given path 'insurers'
And request { name: 'Sammy Insurance', companyCode: '99' }
When method post
Then status 201
And match response == { resourceId: '#number', version: 0, createdBy: 'anonymousUser' }

* def insurerId = response.resourceId

# get insurer by resource id
Given path 'insurers', insurerId
When method get
Then status 200
And match response == { id: '#(id)', name: 'Sammy Insurance', companyCode: '99' }

这是保险人测试。java测试运行程序:

package karate;

import com.intuit.karate.junit5.Karate;

class InsurerTest {

    @Karate.Test
    public Karate testInsurer() {
        return new Karate().feature("classpath:karate/insurer.feature");
    }
}

共有2个答案

慕容品
2023-03-14

当我看到这个:

Warning: Nashorn engine is planned to be removed from a future JDK release

我怀疑你是在使用Java9还是Java11?老实说,我们还没有在这些Java版本上完全测试空手道。您是否可以确认Java8(也可能是9/10)是否正常。

也就是说,我们有兴趣尽快解决此问题,因此,如果您可以提交一个样本项目,我们可以复制此项目,请这样做:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

编辑:空手道1.0将使用GraalVM而不是Nashorn,甚至可以在JDK 16上运行:https://software-that-matters.com/2021/01/27/7-new-features-in-karate-test-automation-version-1_0/

韩宜春
2023-03-14

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

function() {    
    return priceBaseUrl='http://localhost:8080';
}
 类似资料:
  • 我正在使用空手道v0.9.6,这是一个很棒的工具。我有一个 我空手道配置的一部分。js: 我正在使用。sh文件如下: 而且,它在v.0.9.6上长时间运行良好。但是,当我尝试升级到v 1.0或1.0.1时,a给出了一个错误: 我发现这个问题:https://github.com/intuit/karate/issues/1515 但这些例子并不适合我。我试着用“文件:”和空手道。属性['karat

  • 我有空手道。js文件: 我用独立的空手道跑步。罐子: 我看到相同的"不是一个js函数或功能文件:读取('file:./karate-config.js ') - [type: NULL, value: null]"错误消息是否显式设置karate.config路径。如果我将karate.config.path值设置为不包含karate-config.js文件的目录, 我主要在linux的windo

  • 我的API测试项目的工作,并已纳入空手道这样做。现在,我的要求是创建一个响应endpoint的服务器。所有这些都已完成,但我的要求是访问服务器功能中的空手道配置文件中定义的变量。我不能这样做。 例如:功能:示例服务器 场景:路径匹配('\variablevalue)**methodIs('get')) def响应=默认环境 注意:默认_env是空手道配置中的一个变量。js文件,并保存一些默认值。

  • 我想在/文件中定义特定于环境的属性。因此,我创建了以下: 接下来,我编写了这个: 如https://github.com/intuit/Karate#reading-files所示,函数应该由Karate知道,但是我不确定这是只适用于文件还是也适用于。 不幸的是,上面的都不起作用,因为我得到了这个错误: 我确信该文件存在并且是可读的。 是我做错了什么,还是我的方法不被支持?如果它不受支持,推荐的方

  • 我95%的自动化框架是在空手道,工作得很好。我们需要检查应用程序日志中显示的中间结果的功能很少(不在Json响应中)。我写了一个外壳脚本,它在从邮递员手动发送请求后验证Linux机器上的应用程序日志。我使用eclipse的JSCH库调用这个脚本。 有没有什么方法可以让我从空手道发送请求,然后调用我的JSCH类进行验证,这样就可以避免手动发送请求的步骤? 谢谢,阿比

  • 在karate-config.js我基于环境设置了basUrl。我想能够得到这个网址在Java所以我可以得到相应的服务器名称在网址。请告诉我怎么做。我的karate-config.js看起来像这样: 我编写了一个Java实用程序来连接数据库并运行查询。但我需要知道数据库是在示例中的server1还是server2上。