2016-07-24 9 views
6

Ich hätte (10000).toLocaleString('de-DE') erwartet, um "10.000" zurückzugeben, aber stattdessen bekomme ich "10000".Komponententest: Number.toLocaleString()

Gibt es einen Grund, warum dies nicht unterstützt wird? Gibt es bessere Möglichkeiten, Zahlen zu formatieren?

+0

ich ' "10.000"'. – Oriol

+0

Ich bekomme '' 10, 000'' :) – daymosik

+0

Es funktioniert, wenn ich es in einer Funktion und es gibt die erwartete Ausgabe, aber es hat nicht funktioniert für mich, wenn ich versuchte, es so zu testen: 'it ('test toLocaleString' ,() => { \t \t \t lassen nb = 1000; \t \t \t let str = nb.toLocaleString ('de-dE'); \t \t \t erwarten (str) .toBe ('1000'); \t \t}) ' – Ibti

Antwort

1

Es ist ein Webkit-Problem, und PhantomJS möchte die Internationalisierung nicht aufrecht erhalten ... also sind wir leider für einige ungenannte Zeit festgefahren.

https://github.com/ariya/phantomjs/issues/12581

Was ich tue am Ende wird einen benutzerdefinierten Matcher zu schreiben, die für beide überprüfen, da ich in Chrome und PhantomJS laufe.

jasmine.addMatchers({ 
    isAnyOf: (util, customEqualityTesters) => { 
     return { 
     compare: (actual, expected) => { 
      let result = {}; 
      for (let expect of expected) { 
      console.log(actual == expect); 
      if (expect == actual) { 
       result.pass = true; 
       return result; 
      } 
      } 
      result.pass = false 
      return result; 
     } 
     } 
    } 
    }) 

Dann können Sie es wie verwenden

expect(actual).isAnyOf(['10000', '10.000']);