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

引起原因:com.intuit.karate.exception.KarateExcture:引用错误:在Karate配置js文件中未定义异常

松献
2023-03-14

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

XMLHttpRequest我遇到异常

ava.lang.运行时异常:karate-config.js的评估失败com.intuit.karate.ScenarioContext)场景Context.java:211)在com.intuit.karate.步骤。StepActions.java:50)在com.intuit.karate.core.FeatureExcetionUnit.submit(FeatureExcetionUnit.java:85)在com.intuit.karate.cucumber.CucumberRunner.callAsync(CucumberRunner.java:191)在com.intuit.karate.gatling.KarateAction.execute(KarateAction.scala:62)在io.gatling.core.action.行动。$ang(ction.scala:35)在io.gatling.core.action.行动。$ang$(ction.scala:35)在com.intuit.karate.gatling.KarateAction. io$gatling$core$action$ChainableAction$$超级$$ang(KarateAction. scala: 26)在IO. gatling. core. action。在io. gatling. core. action.上的$ang(Action. scala: 60)。链式行动。$ang$(Action. scala: 58)在com.直观. karate. gatling。KarateAction. io$gatling$core$action$ExitableAction$$超$$bang(KarateAction. scala: 26)在io. gatling. core. action。$ang(BlockExit. scala: 137)at io. gatling. core. action.ExitableAction.$ang$(BlockExit. scala: 135)在com.直观. karate. gatling。KarateAction.$ang(KarateAction. scala: 26)at io. gatling. core. Controler. inject。在io. gatling. core. Controler. inject上的Injtor. starUser(Injtor. scala: 130)。在IO. gatling. core. Controler. injectUser(注入器. scala: 140)。注射器。$anonfun$injectStreams2美元(注射器. scala: 120)在io. gatling. core. Controler. inject。注射器。$anonfun$injectStreams2美元$适应(注入器. scala: 120)在io. gatling. core. Controler. inject。UserStream. with Stream(Inject. scala: 61)at io. gatling. core. Controler. inject。注射器。$anonfuny$injectStreams1美元(注射器。scala: 120)在scala。收藏。Traversablelike.$anonfund$map1美元(Traversablelike. scala: 234)在scala. Collection。Iterator. Foreach(Iterator. scala: 929)在scala.集合。Iterator. Foreach$(Iterator. scala: 929)在scala.集合。AbstractIterator. Foreach(Iterator. scala: 1417)在Scala.集合。Maplike$DefaultValuesIterable. Foreach(Maplike. scala: 210)在scala. Collection。Traversablelike. map(Traversablelike. scala: 234)在scala.收藏。Traversablelike. map$(Traversablelike. scala: 227)AbstractTraversable. map(Traversable. scala: 104)at io. gatling. core. Controler. inject。在io. gatling. core. Controler. injectStreams(注入器. scala: 120)。注入器. io$gatling$core$控制器$注入器$注入器$注入器(注入器. scala: 106)注射器$$anonfun1美元。在io. gatling. core. Controler. inject.注射器$$anonfun1美元。在akka. actor上应用(AbstractParatalFunction. scala: 34)。akka. actor上的FSM.处理事件(FSM. scala: 665)。FSM.处理事件$(FSM. scala: 662)在io. gatling. core. Controler. inject。在akka. actor上的InjecttorFSM.处理事件(InjecttorFSM. scala: 34)。akka. actor的FSM. akka$演员$FSM$$处理Msg(FSM. scala: 659)。在akka. actor.的FSM$$anonfund1美元. appyOrse(FSM. scala: 653)。在akka. actor.在io. gatling. core. akka.在akka. actor.在akka. actor.ActorCell. invoke(ActorCell. scala: 496)at akka. outch.邮筒。处理邮箱(Mailbox. scala: 257)在akka。邮寄. run(Mailbox. scala: 224)在akka。邮件箱. exec(Mailbox. scala: 234)在akka。doExec(ForkJoinWork. java: 260)在akka.调度. forkjoin。forkJoinpool$WorkQueue. runWork(ForkJoinpool. java: 1339)在akka.调度. forkjoin。ForkJoinPool. runWorker(ForkJoinPool. java: 1979)在akka. outch. forkjoin。ForkJoinWorkerThread. run(ForkJoinWorkerThread. java: 107)引起:com.直观. karate.异常。KarateExcture: javascript函数调用失败: ReourceError:"XMLHttpRequest"未在com.直观. karate中定义。脚本。脚本. call(脚本. java: 1587)在com.直观. karate。Script. call AndUpdateConfigAndAlsoVarsIfMap返(Script. java: 1709)在com.直观. karate。场景语境)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
}

共有2个答案

咸昀
2023-03-14

我也有同样的问题。因为我想在Scenario执行失败时发送通知,如下所示:

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 }

和空手道配置。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;
}
松翔
2023-03-14
var request = new XMLHttpRequest();

抱歉,这行不通。空手道仅支持ES2015和普通JS。

还有:

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

这是完全没有必要的,因为空手道的专长是发出HTTP请求!请仔细阅读这些文件。例如,您可以在*中执行此操作。功能文件:

Feature:

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

您确定必须在karate-config.js中执行此操作吗?听起来你对空手道完全陌生——但是如果是这样,你可以这样做:var结果=karate.call('my.feature');

 类似资料:
  • 问题内容: 在关于sqlite的android vogella教程期间,我遇到了令人讨厌的问题,并出现以下错误: 我无数次地一步步修改所有文件,以正确重新创建R. class。关于此错误的非常奇怪的是,我不知道为什么在“ com.example.de.vogella.android”中有关于“ com.example”的任何内容。这是某种标准生成的名称吗?我所有的包/名称/路径都从未以“ com.

  • 问题内容: java和slf4j的一些问题使用想法制作项目,可以。但是如果我尝试用gradle制作罐子,我会遇到一些问题。 build.gradle Test.java 终奌站: 输出: 我试图使用gradle / maven(mvn包)相同的问题。由于某些原因,它无法在类路径中找到Logger和LoggerFactory。 问题答案: 谢谢迈克尔记得关于胖子的事。在您的评论尝试谷歌搜索后:“ g

  • 我正在测试maven及其功能。我正在尝试使用commons io将字符串写入文本文件 我已经添加了公地-io到依赖关系 波姆。xml 它编译,但当我运行它时,它抛出一个异常 我想我错过了一些东西,你能帮我指出一下吗?

  • 我第一次与Firebase合作进行一个实践项目,我很难设置用户登录其帐户的能力。 我已成功设置注册,但到目前为止,我无法登录并检查身份验证状态是否正常工作。 我在控制台中不断收到的错误是“未捕获引用错误:未定义Firebase” 我自己做了一些研究,但我似乎找到的唯一答案是,你需要包含Firebase的脚本标签,这在这里不相关,因为我已经包含了它们,或者2.4.2版本的过时响应 有关守则如下:

  • 用我的超文本标记语言,下面的代码部分 在控制台上生成以下错误: 未捕获引用错误:未定义WEBGL 我已经导入了所有必要的js,所以问题是:如何解决这个问题?

  • 我正在尝试做一个简单的通知功能,但每次我触发这个功能,我得到错误 类型错误: 无法读取导出处未定义的属性“参数”通知.函数.数据库.ref.onWrite (/user_code/索引.js:23:32) 在云功能新功能 (/user_code/node_modules/火基函数/库函数/库/云函数.js:105:23) 在云函数 (/user_code/node_modules/火基函数/lib