问题:我遇到一个问题,我尝试从.properties
文件中读取常量,但其变量不会在it
单位的范围内定义试验。执行以下测试将打印1 Hello World!
,但不打印2 Hello World!
。 Jasmine说MY_CONSTANT
未在print something
单元测试中定义,但是在callback
调用jQuery.i18n.properties(...)
中定义了messages.properties
。
似乎正在发生的事情:问题似乎是beforeAll(...)
中的常量在单元测试后的console.log(...)
中设置跑了。我在1 Hello World!
jQuery.i18n.properties(...)
函数中的callback
之前打印出单位测试打印beforeAll(...)
。如何强制测试等待describe('Test for buttons and output in home page.', function() {
beforeAll(function() {
jQuery.i18n.properties({
name : 'Messages',
path : 'src/main/resources/bundle/',
mode : 'both',
language : 'en_US',
async : true,
callback: function() {
console.log('1 ' + MY_CONSTANT);
}
});
});
beforeEach(function() {
jasmine.getFixtures().fixturesPath = 'src/test/javascript/fixture';
loadFixtures('myFixture.html');
$.holdReady(false);
});
it('print something.', function(){
console.log('2 ' + MY_CONSTANT);
});
});
中的异步调用先完成?
简化的Jasmine测试文件(src / test / javascript / mySpec.js):
MY_CONSTANT=Hello World!
简化的属性文件(src / main / resources / bundle / messages.properties):
mvn jasmine:bdd
P.S。这是一个使用Java和jQuery的项目。 Jasmine单元测试目前纯粹使用jQuery和Javascript运行。我也在使用带有jQuery.i18n.properties
的maven运行测试。
更多信息:
主目录中还有一个文件也调用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()
MY_CONSTANT
基本上是一个函数,它通过将属性与HTML id相关联来设置一些必要的显示文本,但它没有设置class TaskSerializer(serializers.ModelSerializer):
id = serializers.ReadOnlyField()
count_assigned = serializers.SerializerMethodField()
count_completed = serializers.SerializerMethodField()
class Meta:
model = Task
fields = ('id', 'label', 'count_assigned', 'count_completed')
def get_count_assigned(self, obj):
return obj.assignees.count()
def get_count_completed(self, obj):
return obj.assignees.exclude(completed__isnull=True).count()
所以代码无关紧要。我发布这个可能很重要的机会。
答案 0 :(得分:0)
问题是我设置了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存储库自述文件中: https://github.com/jquery-i18n-properties/jquery-i18n-properties