Jasmine hat sehr kurze Dokumentation; oft ist es genug. Nicht immer.Jasmine toBeCloseTo was ist der zweite Parameter?
Ich möchte wissen, was genau der zweite Parameter von toBeCloseTo ist. Offizielle Referenz zeigt nur:
it("The 'toBeCloseTo' matcher is for precision math comparison", function() {
var pi = 3.1415926, e = 2.78;
expect(pi).not.toBeCloseTo(e, 2);
expect(pi).toBeCloseTo(e, 0);
});
OK es ist Präzision, aber was bedeutet praktisch "Präzision" in diesem Fall? Ist es die Anzahl der Ziffern nach dem "." das sollte gleich sein?
Mein Fall: Ich möchte zwei Zeitstempel in Millisekunden vergleichen; Wenn der Unterschied zwischen ihnen weniger als 100 ist, ist es in Ordnung für mich.
Als Beispiel, was ist der Wert von X im folgenden Fall?
var timestamp1 = 1501254807000;
var timestamp2 = 1501254807099;
var timestamp3 = 1501254807100;
var precision = X;
expect(timestamp1).toBeCloseTo(timestamp2, precision); //this should pass
expect(timestamp1).toBeCloseTo(timestamp3, precision); //this should NOT pass
Wenn die Genauigkeit nur für Dezimalzahlen ist, konnte ich meine ganzen Zahlen von 1000 dividieren Dezimalzahlen zu bekommen, aber wie auch immer, ich weiß nicht, was X. ist Vorerst ich auf diese Weise tun:
expect(Math.abs(timestamp2-timestamp1)).toBeLessThan(100);
aber es ist nicht sehr gut lesbar, und ich möchte toBeCloseTo verwenden (da es exests ...).
Dank
bearbeiten. Die folgenden Ergebnisse können helfen:
expect(1000000.005).toBeCloseTo(1000000.000,3); //fails
expect(1000000.005).toBeCloseTo(1000000.000,2); //fails
expect(1000000.005).toBeCloseTo(1000000.000,1); //pass
Haben Sie versucht, Blick auf [Quelle für die toBeCloseTo Matcher] (https://github.com/jasmine/jasmine/blob/master/src/core/matchers/toBeCloseTo.js)? –
Die Dokumentation sagt "Die Anzahl der zu überprüfenden Dezimalpunkte". –
BTW ich fügte ein neues Beispiel hinzu, das scheint nicht die entsprechende Dokumentation zu sein, wie von Nikolaj berichtet wurde – fresko