我在Codewars上创作了我的第一个简单的Kata。 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,而不是:BackEnd Developer
有时测试通过,
测试通过:值==全栈开发人员
那么,如何编写测试用例以便验证解决方案?任何示例代码或示例都会有所帮助。
答案 0 :(得分:0)
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)
等编写测试
答案 1 :(得分:0)
当您使用Math.random
函数来确定它们之间的值时,您不可能期望每次运行时从测试中返回相同的结果。在开发过程中,最佳测试用于确定一个参数的变化。
Math.random
Test.assertSimilar(actual, expected, msg)
其中actual
是传递给您的函数的参数,expected
是您假设由kata返回的正确值,msg