我正在创作关于代码战争的第一个简单的卡塔。Kata的目标是修复代码。
这是一个完整的解决方案,
function yourFutureCareer() {
var career = Math.random();
if (career <= 0.32) {
return 'FrontEnd Developer';
} else if (career <= 0.65) {
return 'BackEnd Developer';
} else {
return 'Full-Stack Developer';
}
}
yourFutureCareer();这是用户将使用的初始解决方案,
function {
var : Math.random();
if (career <= 0.32) {
return = FrontEnd Developer
else if (career <= 0.65)
return : BackEnd Developer,
} else {
return 'Full-Stack Developer'
}
yourFutureCareer();为了发布Kata,我必须提供测试用例来确定解决方案是否有效。我试过写第一个测试用例,
Test.assertSimilar(yourFutureCareer(), yourFutureCareer(), 'true')有时测试失败,
预期: FrontEnd Developer,而不是got: BackEnd Developer
有时测试会通过,
测试通过:值==全堆栈开发人员
那么,如何编写测试用例来验证解决方案呢?任何示例代码或示例都会有帮助。
发布于 2015-10-27 16:07:10
Math.random()是您无法在测试中控制的外部性,因此您需要重构,以便您有一个具有确定性行为的可测试函数,例如:
function determineCareer(career) {
if (career <= 0.32) {
return 'FrontEnd Developer';
} else if (career <= 0.65) {
return 'BackEnd Developer';
} else {
return 'Full-Stack Developer';
}
}
function yourFutureCareer() { return determineCareer(Math.random(0)); }然后您可以为determineCareer(0.32)、determineCareer(0.321)等编写测试。
发布于 2017-03-15 22:57:35
当您使用Math.random函数来确定之间的值时,不能期望每次运行测试时都会从测试中返回相同的结果。在开发中,使用最佳测试来确定对一个参数的更改。
目标是:
Math.random。Test.assertSimilar(actual, expected, msg),其中actual是传递给函数的参数,expected是您假定由kata,msg返回的正确值。https://stackoverflow.com/questions/33364622
复制相似问题