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