Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jasmine测试未检测到jQuery国际化常量_Javascript_Jquery_Internationalization_Jasmine - Fatal编程技术网

Javascript Jasmine测试未检测到jQuery国际化常量

Javascript Jasmine测试未检测到jQuery国际化常量,javascript,jquery,internationalization,jasmine,Javascript,Jquery,Internationalization,Jasmine,问题:我遇到了一个问题,我试图从.properties文件中读取常量,但它的变量不会在it单元测试的范围内定义。执行以下测试将打印1 Hello World,但不是2你好,世界。Jasmine说,MY_常量不是在print something单元测试中定义的,而是在调用jQuery.i18n.properties(…)的回调中定义的 似乎正在发生的事情:问题似乎是运行单元测试之前(…)之后,消息中的常量。属性正在中设置。我看到单元测试中的console.log(…)打印在1helloworld之

问题:我遇到了一个问题,我试图从
.properties
文件中读取常量,但它的变量不会在
it
单元测试的范围内定义。执行以下测试将打印
1 Hello World,但不是
2你好,世界。Jasmine说,
MY_常量
不是在
print something
单元测试中定义的,而是在调用
jQuery.i18n.properties(…)
回调中定义的

似乎正在发生的事情:问题似乎是运行单元测试之前(…)
之后,
消息中的常量。属性
正在
中设置。我看到单元测试中的
console.log(…)
打印在
1helloworld之前jQuery.i18n.properties(…)
回调函数中的code>。如何强制测试在(…)
首先完成之前等待
中的异步调用

简化的Jasmine测试文件(src/test/javascript/mySpec.js):

简化属性文件(src/main/resources/bundle/messages.properties):

另外,这是一个使用Java和jQuery的项目。Jasmine单元测试目前纯粹使用jQuery和Javascript运行。我还使用maven和mvnjasmine:bdd运行测试

更多信息

主目录中有一个文件也调用
jQuery.i18n.properties
src/main/resources/assets/internationalization.js
,该文件随代码一起调用:

$(document).ready(function() {
  jQuery.i18n.properties({
    name: 'Messages',
    path: 'bundle/',
    mode: 'both',
    language: 'en_US',
    async: true,
    callback: function() {
      initializeText();
    }
  });
});

initializeText()
基本上是一个函数,它通过将属性与HTML id关联来设置一些必要的显示文本,但它没有设置
MY_常量
,因此代码应该无关紧要。我之所以发布这篇文章,是因为它可能很重要。

问题在于我设置了
async:true
。当我删除
async:true
时,测试通过了:

beforeAll(function() {
  jQuery.i18n.properties({
    name : 'Messages',
    path : 'src/main/resources/bundle/',
    mode : 'both',
    language : 'en_US',
    callback: function() {
      console.log('1 ' + MY_CONSTANT);
    }
  });
});
文档实际上位于github存储库自述文件中:

问题是我设置了
async:true
。当我删除
async:true
时,测试通过了:

beforeAll(function() {
  jQuery.i18n.properties({
    name : 'Messages',
    path : 'src/main/resources/bundle/',
    mode : 'both',
    language : 'en_US',
    callback: function() {
      console.log('1 ' + MY_CONSTANT);
    }
  });
});
文档实际上位于github存储库自述文件中:

beforeAll(function() {
  jQuery.i18n.properties({
    name : 'Messages',
    path : 'src/main/resources/bundle/',
    mode : 'both',
    language : 'en_US',
    callback: function() {
      console.log('1 ' + MY_CONSTANT);
    }
  });
});