【发布时间】:2015-07-01 05:54:47
【问题描述】:
如何根据随机结果生成器编写 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 单元测试几乎没有经验,希望能有一个完整的工作示例演示
非常感谢
【问题讨论】:
-
可能是 META,但我建议跳过测试这类事情。你可以打赌,Math 包已经过死测试,检查它的结果实际上是随机的没有多大意义。无论如何都没有办法做到这一点,考虑到无论如何你都无法说出最终要滚动的内容。
-
如果结果在1到6之间我只能考虑测试
-
@FelipeSkinner 是的,但是当您在测试中编写断言时,您需要精确。您当然可以检查某个值是否介于 1 和 6 之间,但不可能检查 1 和 6 之间的值,因为您需要在编写测试时提前知道。所以提问者只能检查一系列值,而不是特定值。
-
怎么回事?我不能写
expect({rolled value}).toBeGreaterThan(0)和expect({rolled value}).toBeLessThan(7)吗?
标签: javascript unit-testing testing jasmine