Angenommen, ich habe eine Funktion, die eine Zahl multipliziert mit zwei zurückgibt.Testen einer Zufallszahlenfunktion in JavaScript mit Mocha und Chai
function double(number){
return number * 2;
}
es zu testen, mit Mocha und Chai ist einfach.
var expect = require("chai").expect;
describe("#double", function(){
it("should double a number", function(){
expect(double(2)).to.equal(4);
expect(double(4.5)).to.equal(9);
expect(double(-3)).to.equal(-6);
});
});
Aber jetzt nehme ich habe eine Funktion, die eine Zufallszahl zwischen zwei angegebenen Zahlen zurückgibt, rufen sie min
und max
.
function randBetween(min, max){
return Math.floor(Math.random() * (max - min + 1) + min);
}
Ich kann nicht vorhersagen, was der zurückgegebene Wert gleich sein wird. Ich könnte einen Test schreiben, der sicherstellt, dass der zurückgegebene Wert größer oder gleich min
und kleiner oder gleich max
ist, aber das prüft nicht, ob der zurückgegebene Wert zufällig ist. Gibt es eine statistisch gültige Möglichkeit für mich zu testen, ob meine randBetween
Funktion funktioniert?
P.S. Ich weiß, dass die Funktion ungültige Argumente nicht behandelt, z. wenn max
weniger als min
ist. Bitte lassen Sie das für jetzt beiseite.