如何用Jasmine编写一个随机结果的单元测试?(如掷骰子)
How to write up a unit test in Jasmine for a random outcome? (eg Dice Throw)
如何根据随机结果生成器编写Jasmine单元测试?
例如,如何围绕随机掷骰子的结果(或颜色选择器,或天气设置,如果是字符串)编写测试?
骰子代码本身是沿着以下行:
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单元测试没有什么经验,如果能展示一个完整的工作示例,我将不胜感激
非常感谢
你可以在谷歌上搜索"如何测试随机性",但正如@radiativematt所说,你只是不在应用程序中测试这种行为,或者至少不作为常规测试套件的一部分。
如果我为一个"骰子"写代码,它应该给出一个从1到6的随机数,我会在写完代码后手动测试它,但我不会写自动测试。也就是说,我会写一个一次性的小程序,它会执行rollDice()
一百万次,然后输出每个结果的相对频率。我希望结果只包括数字1到6,并且我希望所有频率都舒适地接近1⁄6。如果我对结果感到满意,我会认为这是经过测试的。我可能会添加一条评论,比如"如果你修改了这个代码,记得测试它"。
我会把它写成两个期望:
expect({rolled value}).toBeGreaterThan(0);
expect({rolled value}).toBeLessThan(7);
只是不要在测试中使用math.random
。模拟它/重构并测试其他一切。例如,您应该测试math.random
是否有任何可能的(一些边缘情况)输出,您的rollDice
函数仍然会产生有效的结果
相关文章:
- 如何在javascript中保持我的骰子总数的运行
- 掷多个骰子,保持最好的3个
- JavaScript:多个掷骰子的人,每个人都有自己的掷骰子总数
- 获取其中骰子的总和'它自己的窗口.并不是所有的窗户
- 如何在阵列中放置骰子
- 骰子掷成一排
- 点击骰子赢得't工作(javascript)
- Javascript中非常基本的骰子游戏-尝试登录'获胜'变量
- 显示掷骰子的次数
- 初学者:掷骰子:频率和如果-否则-如果
- 使用 javascript 从图像数组中更改 img 标签 src.骰子游戏
- 掷骰子直到达到数字
- Do/while 循环不计算掷骰子次数或与骰子对齐
- JavaScript 骰子游戏返回 0
- 掷骰子脚本均匀分布吗?(使用 Math.random())
- 使用输入多少次掷骰子,然后只输出最后一掷Javascript上的两个骰子的总和
- 骰子效果-如何在最后显示假结果和真结果(JavaScript)
- 如何一次掷一个骰子
- 如何用Jasmine编写一个随机结果的单元测试?(如掷骰子)
- Javascript掷骰子动画