我有一系列Jasmine
测试针对使用ECMAScript国际化API的AngularJs
服务运行。当我通过Chrome运行它们时,它们都能成功运行。但是,当我使用PhantomJS
通过maven运行它们时,它们都会失败,因为看起来PhantomJs
尚不支持Internationalization API。PhantomJS不支持Javascript国际化API
错误消息我得到了使用国际物体的测试是:
1: ReferenceError: Can't find variable: Intl in localizationService.js
而且测试的其余部分只是失败。
测试很简单,看起来像这样:
it('Format date with en-us locale', (function(){
var date= "06/13/2013"
expect(service.date(date,'en-us')).toEqual("6/13/2013");
}))
,并在服务中的方法(localizationService.js)是围绕国际API简单封装:
function getCurrentTimeZone(){
return Intl.DateTimeFormat().resolved.timeZone
}
function date(dateInput,locale,options){
// some other stuff
// ...
if (locale) {
return _date.toLocaleDateString(locale,options);
} else {
return _date.toLocaleDateString();
}
}
我的问题是:
1-我的假设是否正确PhantomJS v1.9.2
不支持ECMAScript internationalization API
?无论如何要确认吗?
2-我该如何解决这个问题?我需要通过maven运行我的测试,并且我将有更多的测试以这种或那种方式触及我的localizationService API。
感谢
这个答案比较好。我建议接受这是正确的答案。干杯! – activedecay
也为我工作。除了上述步骤之外,还必须添加以下行:require(“karma-intl-shim”)到karma.conf.js中的插件数组 – vanval
如果您正在使用--single-run = false运行测试,你必须突破这个问题,并在'karma.conf.js'的改变生效之前重启进程。在那一个上失去了大约一个小时...... –