我正在研究我的第一个卡塔。我有一个工作的Beta Kata,并收到了一些很好的反馈。我现在正在尝试添加一些随机测试。
如果您想尝试查看需要的内容,那么Beta中的Kata名为“从鸟名创建四个字母的代码”。
我阅读了一些有关如何编写随机测试代码的教程页面。我以为我已经成功完成了我的。我将它粘贴到我之前(非随机)测试用例下的Test Cases窗口中。我点击了“验证解决方案”按钮。完整解决方案窗口中的代码通过了所有测试,包括随机测试。我多次验证它可以生成一些随机测试。他们都过去了。但是,当我点击Kata Beta页面顶部的“重新发布”链接时,我收到了此错误:
“初始解决方案无效。 (javascript)代码不应该通过 kata测试用例“
自从我开始处理Kata以来,我没有更改Initial Solution窗口中的代码。我在发布之前运行第一个测试用例时没有收到此错误。当我验证随机测试时,我没有收到消息。
以下是Initial Solution窗口中的代码:
function birdCode(arr){
}
以下是随机测试生成器的大部分代码。 我没有包含解决Kata的功能。
我的Kata为用户提供了一系列鸟类名称/字符串。 他们编写的函数将以大写形式返回四个字母代码的数组。 因此,对于随机测试,我设置了一个代码数组,以及一个代码作为键和名称作为值的对象。
代码生成一个从0到代码数组长度的随机数。 它获取基于该数字的代码,然后从对象中获取相应的名称。 然后它将代码推送到一个数组(用户应返回的正确代码),并将名称推送到另一个数组(将提供给用户的数组)。 然后,Test.Asserts使用这两个数组。
function birdCode(arr){
// The function that solves the Kata is here.
return arrReturn;
}
///// Test Cases and Random Test Case Generation:
var arrTestCodes = ["BRAN", "ESCU", "YBMA", "BTTH", "CHUK", "COHA", "RNPH", "BCRF", "SURF", "BAOR", "YTWA", "RAGM", "LIMP", "MEGU", "VGSW", "LWFG"];
var codesNames = {
BRAN:"Brant",
CHUK:"Chukar",
SURF:"Surfbird",
LIMP:"Limpkin",
ESCU:"Eskimo Curlew",
COHA:"Cooper’s Hawk",
BAOR:"Baltimore Oriole",
MEGU:"Mew Gull",
YBMA:"Yellow-Billed Magpie",
RNPH:"Red-Necked Phalarope",
YTWA:"Yellow-Throated Warbler",
VGSW:"Violet-Green Swallow",
BTTH:"Bare-throated Tiger-Heron",
BCRF:"Brown-capped Rosy-Finch",
RAGM:"Red-and-green Macaw",
LWFG:"Lesser White-fronted Goose"
}
var nbr = 0;
var codeToUse = "";
var nameToUse = "";
var arrForRandomTest01 = [];
var arrForRandomResults01 = [];
for(var i = 0; i < 4; i++){
nbr = Math.floor(Math.random() * (arrTestCodes.length - 1 + 1 - 0) + 0);
codeToUse = arrTestCodes[nbr];
nameToUse = codesNames[codeToUse];
arrForRandomTest01.push(nameToUse);
arrForRandomResults01.push(codeToUse);
}
Test.assertDeepEquals(birdCode(arrForRandomTest01),arrForRandomResults01)
我可以轻松地修改此代码,通过创建更多的数组集并为生成随机数并填充数组的循环创建更多数组来生成多个随机测试用例。但是,我想首先进行一次随机测试。