Mam serię testów Jasmine
uruchomionych przeciwko usłudze AngularJs
korzystającej z interfejsu ECMAScript Internationalization API. Wszystkie działają pomyślnie, gdy uruchamiam je w Chrome. Jednak, gdy używam PhantomJS
, aby uruchomić je przez maven, wszystkie zawodzą, ponieważ wydaje się, że PhantomJs
nie obsługuje jeszcze interfejsu Internationalization API.Interfejs API internacjonalizacji Javascript nie jest obsługiwany przez PhantomJS
Komunikat o błędzie uzyskać do testów wykorzystujących Intl przedmiotu jest:
1: ReferenceError: Can't find variable: Intl in localizationService.js
A reszta testów prostu zawodzą.
Testy są proste i wyglądać tak:
it('Format date with en-us locale', (function(){
var date= "06/13/2013"
expect(service.date(date,'en-us')).toEqual("6/13/2013");
}))
i metody eksploatacji (localizationService.js) są proste obwolut wokół 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();
}
}
Moje pytania to:
1- Czy moje założenie jest prawidłowe, ponieważ PhantomJS v1.9.2
nie obsługuje ECMAScript internationalization API
? Czy mimo to to potwierdza?
2- Jak mogę podejść do rozwiązania tego problemu? Muszę przeprowadzić testy za pomocą programu maven i będę mieć więcej testów trafiających w mój interfejs API servicealization w taki czy inny sposób.
Dzięki
ta odpowiedź jest o wiele lepsza. Proponuję zaakceptować to jako poprawną odpowiedź. Twoje zdrowie! – activedecay
Pracowałem też dla mnie. Oprócz powyższych kroków, trzeba było dodać tę linię: require ("karma-intl-shim") do tablicy wtyczek w pliku karma.conf.js – vanval
Jeśli używasz testów z --single-run = false, musisz wyjść z tego i ponownie uruchomić proces, zanim zaczną obowiązywać zmiany w pliku 'karma.conf.js'. Straciłem około godziny na tym ... –