首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Math.Random()编写测试用例;codewars

为Math.Random()编写测试用例;codewars
EN

Stack Overflow用户
提问于 2015-10-27 09:51:42
回答 2查看 391关注 0票数 1

我正在创作关于代码战争的第一个简单的卡塔。Kata的目标是修复代码。

这是一个完整的解决方案,

代码语言:javascript
复制
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();

这是用户将使用的初始解决方案,

代码语言:javascript
复制
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,我必须提供测试用例来确定解决方案是否有效。我试过写第一个测试用例,

代码语言:javascript
复制
Test.assertSimilar(yourFutureCareer(), yourFutureCareer(), 'true')

有时测试失败,

预期: FrontEnd Developer,而不是got: BackEnd Developer

有时测试会通过,

测试通过:值==全堆栈开发人员

那么,如何编写测试用例来验证解决方案呢?任何示例代码或示例都会有帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-10-27 16:07:10

Math.random()是您无法在测试中控制的外部性,因此您需要重构,以便您有一个具有确定性行为的可测试函数,例如:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-03-15 22:57:35

当您使用Math.random函数来确定之间的值时,不能期望每次运行测试时都会从测试中返回相同的结果。在开发中,使用最佳测试来确定对一个参数的更改。

目标是:

  1. 从您所做的每个测试中获得相同的预期结果,所以尽量不要使用外部因素,并避免使用Math.random
  2. Test.assertSimilar(actual, expected, msg),其中actual是传递给函数的参数,expected是您假定由kata,msg返回的正确值。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33364622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档