如何根据随机结果生成器编写茉莉花单元测试?
例如,如何围绕随机骰子投掷(或颜色选择器或天气设置,如果它是一个字符串)的结果编写测试?
骰子代码本身就是:
Dice.prototype.rollDice = function() {
1 + Math.floor(Math.random() * 6);
};
而且我知道下面写的内容是不完整/不完整的,我只是把它写成我被卡住的例子:
it("can generate a random number from the players throw", function() {
var dice = new Dice();
dice.rollDice();
expect(----------------------).toEqual(----------------);
});
我对Jasmine Unit测试没有什么经验,并希望演示一个完整的工作示例
非常感谢
答案 0 :(得分:0)
你可以谷歌搜索“如何测试随机性”,但正如@radicalmatt所说,你只是不在你的应用程序中测试这种行为,或者至少不是你常规测试套件的一部分。
如果我要为一个应该给出1到6的随机数的“骰子”编写代码,我会在编写代码后手动测试它,但我不会编写自动化测试。也就是说,我会写一个小的一次性程序,它将执行rollDice()
一百万次,然后输出每个结果的相对频率。我希望结果只包括数字1到6,我希望所有频率都能舒适地接近 1 / 6 。如果我对结果感到满意,我会考虑进行测试。我可以添加一条评论,例如“如果您修改它,请记住测试此代码”。
答案 1 :(得分:0)
我会把它写成两个期望:
expect({rolled value}).toBeGreaterThan(0);
expect({rolled value}).toBeLessThan(7);
答案 2 :(得分:0)
在测试中不要使用math.random
。嘲笑它/重构并测试其他一切。例如,你应该测试math.random
是否有任何可能的(一些边缘情况)输出,你的rollDice
函数仍然会产生有效的结果