我Jasmine
针对AngularJs
使用ECMAScript Internationalization API 的服务运行了一系列测试.当我通过Chrome运行它们时,它们都成功运行.但是,当我使用PhantomJS
maven运行它们时,它们都会失败,因为它似乎PhantomJs
还不支持Internationalization API.
我使用Intl对象获得的测试错误消息是:
1:ReferenceError:找不到变量:localService.js中的Intl
其余的测试都失败了.
测试很简单,看起来像这样:
it('Format date with en-us locale', (function (){
var date= "06/13/2013"
expect(service.date(date,'en-us')).toEqual("6/13/2013");
}))
Run Code Online (Sandbox Code Playgroud)
服务中的方法(localizationService.js)是Intl 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();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
1-我的假设是否正确,PhantomJS v1.9.2
不支持ECMAScript internationalization API
?无论如何要确认吗?
2-如何解决此问题?我需要通过maven运行我的测试,我将有更多测试以某种方式击中我的本地化服务API.
谢谢
javascript internationalization phantomjs angularjs ecmascript-intl
在SublimeText上,我们可以使用Ctrl+ 0将导航移动到侧边栏.无论如何,有关键盘的项目打开上下文菜单,如右键单击?
我在Windows XP和SublimeText 2.0.1上
我正在尝试对使用使用某些资源的服务的指令进行单元测试.我遇到的问题是,当我模拟get
我的资源的方法时,它将被模拟,但不会调用回调函数.因此,结果将不是预期的结果.
我尝试用嘲笑的资源spyOn
的建议在这里,也$httpBackend.when
,但既不工作.当我调试代码时,它将转到get方法但get调用函数永远不会被调用,因此,myCallback
设置我的值的内部回调永远不会被调用.我不确定我的方法是否正确,我感谢您的建议.
/资源
.factory ('AirportTimeZone', function($resource){
return $resource('/api/airport/:airportId/timezone',{airportId: '@airportId'});
})
Run Code Online (Sandbox Code Playgroud)
/使用我的资源的服务:
angular.module('localizationService', [])
.factory('LocalizationService', ['AirportTimeZone','CurrentLocalization',
function (AirportTimeZone,CurrentLocalization) {
function getAirportTimeZone(airport,myCallback){
var options = {}
var localOptions = AirportTimeZone.get({airportId:airport}, function(data){
options.timeZone = data.timeZoneCode
myCallback(options)
});
}
})
Run Code Online (Sandbox Code Playgroud)
/指令
.directive('date',function (LocalizationService) {
return function(scope, element, attrs) {
var airTimeZone
function updateAirportTimeZone(_airportTimeZone){
airTimeZone = _airportTimeZone.timeZone
// call other stuff to do here
}
....
LocalizationService.getAirportTimeZone(airport,updateAirportTimeZone)
....
element.text("something");
}
});
Run Code Online (Sandbox Code Playgroud)
/测试
describe('Testing date directive', …
Run Code Online (Sandbox Code Playgroud) 我们的Web应用程序基于Spring安全性。我们已经通过SSO提供程序(CAS)处理身份验证
我们正在尝试寻找一种方便的解决方案来处理我们的应用程序的授权(角色和前提)。
我了解了XACML;但是,找不到在Spring-security框架中实现和集成它的任何实践经验/示例。
有人对此有经验吗?
谢谢,雷。
我是Grails的新手,我非常喜欢它.我想把我的课程安排在像org.company.project.module.model
.让我重复是非常痛苦的create-domain-class <package>.<class_name>
.有没有类似"包模板"的东西,或者我可以以某种方式"输入"(如grails cd org.comopany...
),然后只写类名(grails Person
将在./
位置生成)?这可能还是我应该使用copy paste
设计模式?在此先感谢您的帮助.
我正在寻找一种通过约束验证Grails中的IP地址的方法.
这样的事情可能吗?
package example
class Ip {
String ip
static constraints = {
ip(unique: true, inetAddress: true)
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了这个链接:http://grails.org/doc/2.2.x/api/org/codehaus/groovy/grails/validation/routines/InetAddressValidator.html,但我不知道如何实现这个.
我想在我的gsp上使用g:set标签.只要我在一个页面中,范围是默认或页面,它就可以正常工作.当我试图将范围更改为会话时,它不起作用.
我的理解是,我应该能够不仅在该页面上访问该变量,而且在范围是会话时也能访问其他变量,但是,我可能错了.
在一个全新的2.0.3应用程序中,我在index.gsp主体上有这个脚本,它按预期工作.
<g:set var="bar" value="${new Date() - 7}" scope="page" />
<div class="message" role="status">${bar}</div>
Run Code Online (Sandbox Code Playgroud)
但是,如果我将范围更改为会话它不起作用,
<g:set var="bar" value="${new Date() - 7}" scope="session" />
<div class="message" role="status">${bar}</div>
Run Code Online (Sandbox Code Playgroud)
也没有在任何其他页面上.
我已经在网上搜索了一段时间了。我发现有人在面对它,但无法找到适当的解决方案。问题是处理in中发生的任何异常的最佳方法是什么template.gsp
?我知道我可以在其中使用a try-catch
,这样我的控制器就不会出现异常,但是我确实发现有人说这不是一个好习惯,但未能回答原因。那么这是错误的方法吗?如果是的话,是否有更好的解决方案来解决这个问题?
grails ×3
angularjs ×2
grails-2.0 ×2
gsp ×2
jasmine ×1
javascript ×1
phantomjs ×1
spring ×1
sublimetext ×1
sublimetext2 ×1
text-editor ×1
validation ×1
xacml ×1