空手道karate-config.js不是js函数

Sha*_*att 3 java testing karate

我正在尝试将空手道用于e2e测试,并且从最小的设置开始。我想创建一些配置项以karate-config.js供测试使用,但空手道报告该文件不是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
Run Code Online (Sandbox Code Playgroud)

这是我的karate-config.js

function fn() {

    return {
        priceBaseUrl: "http://localhost:8080"
    };
}
Run Code Online (Sandbox Code Playgroud)

这是我的insurer.feature测试:

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' }
Run Code Online (Sandbox Code Playgroud)

这是InsurerTest.java测试人员:

package karate;

import com.intuit.karate.junit5.Karate;

class InsurerTest {

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

Pet*_*mas 5

当我看到这个:

Warning: Nashorn engine is planned to be removed from a future JDK release
Run Code Online (Sandbox Code Playgroud)

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

也就是说,我们有兴趣尽快解决这个问题,所以如果你能提交一个我们可以复制的示例项目,请这样做:https : //github.com/intuit/karate/wiki/How-to-提交问题

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


小智 5

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

function() {    
    return priceBaseUrl='http://localhost:8080';
}
Run Code Online (Sandbox Code Playgroud)