简体   繁体   English

由以下原因引起:com.intuit.karate.exception.KarateException:ReferenceError:空手道配置js文件中未定义“ XMLHttpRequest”异常

[英]Caused by: com.intuit.karate.exception.KarateException: ReferenceError: “XMLHttpRequest” is not defined Exception in Karate config js file

I want to load my configurations from server but when I am doing using 我想从服务器加载配置,但是在使用时

XMLHttpRequest I am getting Exception 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.Exitab ava.lang.RuntimeException:在com.intuit.karate.StepActions。(StepActions.java:50)的com.intuit.karate.ScenarioContext。(ScenarioContext.java:211)处评估'karate-config.js'失败.intuit.karate.core.FeatureExecutionUnit.submit(FeatureExecutionUnit.java:85)位于com.intuit.karate.cucumber.CucumberRunner.callAsync(CucumberRunner.java:191)位于com.intuit.karate.gatling.KarateAction.execute(KarateAction .scala:62)在io.gatling.core.action.Action。$ bang(Action.scala:35)在com.intuit的io.gatling.core.action.Action。$ bang $(Action.scala:35) .karate.gatling.KarateAction.io $ gatling $ core $ action $ ChainableAction $$ super $ bang(KarateAction.scala:26)在io.gatling.core.action.ChainableAction。$ bang(Action.scala:60)在io.gatling.core.action.ChainableAction。$ bang $(Action.scala:58)位于com.intuit.karate.gatling.KarateAction.io $ gatling $ core $ action $ ExitableAction $$ super $$ bang(KarateAction.scala :26),位于io.gatling.core.action.ExitableAction。$ bang(BlockExit.scala:137),位于io.gatling.core.action.Exitab leAction.$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(Trav leAction。$ bang $(BlockExit.scala:135)位于com.intuit.karate.gatling.KarateAction。$ bang(KarateAction.scala:26)位于io.gatling.core.controller.inject.Injector.Injector.startUser(Injector.scala) :130),位于io.gatling.core.controller.inject.Inject.Inject.Injector。$ anonfun $ injectStreams $ 2(Injector.scala:120)处,位于io.gatling.core.controller.inject.Injector.injectUser(Injector.scala:140) io.gatling.core.controller.inject.UserStream.withStream(Injector.scala:61)在io.gatling.core.controller.inject.Injector。$ anonfun $ injectStreams $ 2 $ adapted(Injector.scala:120)在io。 gatling.core.controller.inject.Injector。$ anonfun $ injectStreams $ 1(Injector.scala:120)在scala.collection.TraversableLike。$ anonfun $ map $ 1(TraversableLike.scala:234)在scala.collection.Iterator.foreach(在scala.collection.Iterator.foreach $(Iterator.scala:929)处位于scala.collection.AbstractIterator.foreach(Iterator.scala:1417)在scala.collection.MapLike $ DefaultValuesIterable.foreach(MapLike。 scala:210)位于scala.collection.TraversableLike.map(Trav ersableLike.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$ 在scala.collection.TraversableLike.map $(TraversableLike.scala:227)在scala.collection.AbstractTraversable.map(Traversable.scala:104)处的ersableLike.scala:234)在io.gatling.core.controller.inject.Injector处。于io.gatling.core.controller.inject.Injector.io $ gatling $ core $ controller $ inject。 .inject.Injector $$ anonfun $ 1.applyOrElse(Injector.scala:151)在io.gatling.core.controller.inject.Injector $$ anonfun $ 1.applyOrElse(Injector.scala:148)在scala.runtime.AbstractPartialFunction.apply (AbstractPartialFunction.scala:34)在akka.actor.FSM.processEvent(FSM.scala:665)在akka.actor.FSM.processEvent $(FSM.scala:662)在io.gatling.core.controller.inject.InjectorFSM akka.actor.FSM.akka $ actor $ FSM $$ processMsg(FSM.scala:659)上的.processEvent(InjectorFSM.scala:34)在akka.actor.FSM $$ anonfun $ receive $ 1.applyOrElse(FSM.scala: 653)在akka.actor.Actor.aroundReceive(Actor.scala:514)在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) (Actor.scala:512)在io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:23)在akka.actor.ActorCell.receiveMessage(ActorCell.scala:527)在akka.actor.ActorCell.invoke( ActorCell.scala:496)在akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)在akka.dispatch.Mailbox.run(Mailbox.scala:224)在akka.dispatch.Mailbox.exec(Mailbox.scala:234) )在akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1339)处在akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) java:1979)在akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)导致原因:com.intuit.karate.exception.KarateException:javascript函数调用失败:ReferenceError:com上未定义“ XMLHttpRequest”。 intuit.karate.Script.evalFunctionCall(Script.java:1636)位于com.intuit.karate.Script.call(Script.java:1587)位于com.intuit.karate.Script.callAndUpdateConfigAndAlsoVarsIfMapReturned(Script.java:1709) at com.intuit.karate.ScenarioContext.(ScenarioContext.java:206) 在com.intuit.karate.ScenarioContext。(ScenarioContext.java:206)


My config File Code : 我的配置文件代码:

 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();

Sorry, that's not going to work. 抱歉,这行不通。 Karate supports just ES2015 and plain JS. 空手道仅支持ES2015和纯JS。

Also: 也:

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

That's totally un-necessary, since Karate's speciality is making HTTP requests ! 这完全没有必要,因为空手道的专长是发出HTTP请求! Please read the docs more carefully. 请更仔细地阅读文档。 For example you can do this in a *.feature file: 例如,您可以在*.feature文件中执行此操作:

Feature:

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

And are you sure you have to do this in karate-config.js ? 并且确定要在karate-config.js执行此操作吗? Sounds like you are completely new to Karate - but if so, you can do: var result = karate.call('my.feature'); 听起来您对空手道完全var result = karate.call('my.feature'); -但如果是这样,您可以这样做: var result = karate.call('my.feature'); .

I also have the same issue. 我也有同样的问题。 Because I want to send notice when Scenario execute failed, like this: 因为我想在方案执行失败时发送通知,所以像这样:

Feature:

  Background:
    * url baseApi
    * configure afterScenario =
    """
    function() {
      if (karate.info.errorMessage != null) {
        callback();
      }
    }
    """
    * configure retry = { count: 3, interval: 3000 }

  Scenario: get it (ERROR)
    * def input =
    """
    {
      'form': {
        'id': '123509638998',
        'td': '5xm6ksy6ty2jqam',
        'nd': '0'
      },
      'query': {
      }
    }
    """
    * path '/rest/n/list'
    * params input.query
    * form fields input.form
    * retry until responseStatus == 200
    * method post
    * match response contains { result: 1 }

And karate-config.js like this: karate-config.js像这样:

function() {
  karate.configure('connectTimeout', 5000);
  karate.configure('readTimeout', 5000);
  var url = 'http://127.0.0.1:8088';
  if (karate.properties['apiServer'] != '') {
    url = karate.properties['apiServer'];
  }

  var config = {
    apiBaseUrl: url,
    callback: function() {
      var url = 'https://x.y.z.com/api/send?access_token=257def70cab07fda4e93efeae04c497d';

      var data = JSON.stringify({
        'id': '123',
        'msgtype': 'text',
        'text':{
          'content': 'Test message...'
        }
      });

      fetch(url, {
        headers: { "Content-Type": "application/json; charset=utf-8" },
        method: 'POST',
        body: data
      })
    }
  };

  return config;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将Json传递给karate-config.js文件 - Pass Json to karate-config.js file 空手道 - karate.configure('headers', { Accept: 'application/json' }); 在 karate-config.js 文件中无法识别。 它说缺少导入语句 - Karate - karate.configure('headers', { Accept: 'application/json' }); is not recognized in karate-config.js file. It says missing import statements Karate-config.js 文件未在 eclipse 中保存为 JS 文件 - Karate-config.js file is not saved as JS file in eclipse ExceptionsManager.js:84未处理的JS异常:ReferenceError:未定义响应 - ExceptionsManager.js:84 Unhandled JS Exception: ReferenceError: response is not defined 未捕获的异常:ReferenceError:调试未定义 - Uncaught Exception: ReferenceError: debug is not defined 在 karate-config.js 中定义另外两个函数 - Defining two o more functions in karate-config.js 当我尝试运行节点 js 文件时,出现 ReferenceError: XMLHttpRequest is not defined - When I tried to run a node js file .I am getting ReferenceError: XMLHttpRequest is not defined ReferenceError:XMLHttpRequest 未在 emailjs 中定义 - ReferenceError: XMLHttpRequest is not defined in emailjs 由'form'元素引起的JS异常 - A JS exception caused by 'form' element 我如何使用 1 个参数在空手道功能文件中调用 js function - How can i call the js function in karate feature file with 1 argument
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM