javascript - 由 : com. intuit.karate.exception.KarateException: ReferenceError: "XMLHttpRequest"is not defined Karate 配置 js 文件中的异常引起

标签 javascript java karate

我想从服务器加载我的配置,但是当我使用

XMLHttpRequest 我遇到异常

ava.lang.RuntimeException: evaluation of 'karate-config.js' failed at com.intuit.karate.ScenarioContext.(ScenarioContext.java:211) at com.intuit.karate.StepActions.(StepActions.java:50) at com.intuit.karate.core.FeatureExecutionUnit.submit(FeatureExecutionUnit.java:85) at com.intuit.karate.cucumber.CucumberRunner.callAsync(CucumberRunner.java:191) at com.intuit.karate.gatling.KarateAction.execute(KarateAction.scala:62) at io.gatling.core.action.Action.$bang(Action.scala:35) at io.gatling.core.action.Action.$bang$(Action.scala:35) at com.intuit.karate.gatling.KarateAction.io$gatling$core$action$ChainableAction$$super$$bang(KarateAction.scala:26) at io.gatling.core.action.ChainableAction.$bang(Action.scala:60) at io.gatling.core.action.ChainableAction.$bang$(Action.scala:58) at com.intuit.karate.gatling.KarateAction.io$gatling$core$action$ExitableAction$$super$$bang(KarateAction.scala:26) at io.gatling.core.action.ExitableAction.$bang(BlockExit.scala:137) at io.gatling.core.action.ExitableAction.$bang$(BlockExit.scala:135) at com.intuit.karate.gatling.KarateAction.$bang(KarateAction.scala:26) at io.gatling.core.controller.inject.Injector.startUser(Injector.scala:130) at io.gatling.core.controller.inject.Injector.injectUser(Injector.scala:140) at io.gatling.core.controller.inject.Injector.$anonfun$injectStreams$2(Injector.scala:120) at io.gatling.core.controller.inject.Injector.$anonfun$injectStreams$2$adapted(Injector.scala:120) at io.gatling.core.controller.inject.UserStream.withStream(Injector.scala:61) at io.gatling.core.controller.inject.Injector.$anonfun$injectStreams$1(Injector.scala:120) at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234) at scala.collection.Iterator.foreach(Iterator.scala:929) at scala.collection.Iterator.foreach$(Iterator.scala:929) at scala.collection.AbstractIterator.foreach(Iterator.scala:1417) at scala.collection.MapLike$DefaultValuesIterable.foreach(MapLike.scala:210) at scala.collection.TraversableLike.map(TraversableLike.scala:234) at scala.collection.TraversableLike.map$(TraversableLike.scala:227) at scala.collection.AbstractTraversable.map(Traversable.scala:104) at io.gatling.core.controller.inject.Injector.injectStreams(Injector.scala:120) at io.gatling.core.controller.inject.Injector.io$gatling$core$controller$inject$Injector$$inject(Injector.scala:106) at io.gatling.core.controller.inject.Injector$$anonfun$1.applyOrElse(Injector.scala:151) at io.gatling.core.controller.inject.Injector$$anonfun$1.applyOrElse(Injector.scala:148) at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:34) at akka.actor.FSM.processEvent(FSM.scala:665) at akka.actor.FSM.processEvent$(FSM.scala:662) at io.gatling.core.controller.inject.InjectorFSM.processEvent(InjectorFSM.scala:34) at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:659) at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:653) at akka.actor.Actor.aroundReceive(Actor.scala:514) at akka.actor.Actor.aroundReceive$(Actor.scala:512) at io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:23) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:527) at akka.actor.ActorCell.invoke(ActorCell.scala:496) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) at akka.dispatch.Mailbox.run(Mailbox.scala:224) at akka.dispatch.Mailbox.exec(Mailbox.scala:234) at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) Caused by: com.intuit.karate.exception.KarateException: javascript function call failed: ReferenceError: "XMLHttpRequest" is not defined at com.intuit.karate.Script.evalFunctionCall(Script.java:1636) at com.intuit.karate.Script.call(Script.java:1587) at com.intuit.karate.Script.callAndUpdateConfigAndAlsoVarsIfMapReturned(Script.java:1709) at com.intuit.karate.ScenarioContext.(ScenarioContext.java:206)


我的配置文件代码:

function () {
    var System = Java.type('java.lang.System');
    var env = System.getProperty("profile");
    if (!env) {
        karate.log('env is not defined.')
        env = 'dev';
    }
    var request = new XMLHttpRequest();
    request.open("GET", "http://www.testsite.com",false);
    request.send();
    var result = request.responseText;
    console.log(result);
    return result
}

最佳答案

var request = new XMLHttpRequest();

抱歉,这行不通。 Karate 仅支持 ES2015 和纯 JS。

还有:

request.open("GET", "http://www.testsite.com",false);

这完全没有必要,因为 Karate 的专长是发出 HTTP 请求!请更仔细地阅读文档。例如,您可以在 *.feature 文件中执行此操作:

Feature:

Scenario:
Given url 'http://www.testsite.com'
When method get
Then status 200
And def result = response
And print result

您确定必须在 karate-config.js 中执行此操作吗?听起来您是 Karate 的新手 - 但如果是这样,您可以执行以下操作:var result = karate.call('my.feature');

关于javascript - 由 : com. intuit.karate.exception.KarateException: ReferenceError: "XMLHttpRequest"is not defined Karate 配置 js 文件中的异常引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53480810/

相关文章:

javascript 将 readAsBinaryString 的结果转换为 utf8

javascript - Angular if/else 开关

java - 当我有私有(private) id 字段时,为什么 Hibernate 要求我们实现 equals/hashcode 方法?

java - 扫描一个整数和一个for循环来扫描一些字符串

javascript - 如何在 Karate 中调用 Js 函数时传递变量

Javascript 返回未定义

javascript - 基于当前时间的重定向

java - 如何使用 Spring RequestMapping 区分域

javascript - 如何在 Karate 框架中使用 'faker' 库?

java - Karate 条件后台执行