【问题标题】:How can I fail a mocha test if it takes shorter than a given time period?如果摩卡咖啡测试的时间比给定的时间短,我怎么能失败?
【发布时间】:2019-03-07 01:09:30
【问题描述】:

我正在尝试测试的场景:我想确保一个文件没有被缓存,因此一个通常需要 10 秒以上的进程执行并完成。

如果完成时间少于 10 秒,我想不通过 mocha 测试。我已经在 stackoverflow 上查看了文档和其他问题。我该怎么做?

谢谢!

编辑:这种测试模式可能并不理想 - 我主要只是好奇这个特定问题会出现什么。

【问题讨论】:

  • 我认为这不是断言此测试的正确方法。仅仅因为一项操作通常需要一定的时间,并不意味着它在每种情况下都总是很好。您应该断言该文件未缓存并测试其他条件。文件是什么,你是如何缓存它的?
  • 这是我存储到磁盘的 sqlite .db 文件。我正在检查文件是否被缓存,以及尽可能多的其他条件,因为功能是不透明的。我还想确保操作至少需要 10 秒。在我测量它的 10 次中,它花费的时间不少于 35 秒。如果 db 文件存在,则该操作只需不到一秒的时间即可完成。时间是我要验证此操作的最后一部分,主要是为了避免出现无声故障。

标签: javascript node.js mocha.js chai


【解决方案1】:

您可以在任务之前和任务完成时花费时间,并断言差异是>=与您想要的。比如:

function doSomethingSlow(time){
    // wait time and resolve
    return new Promise(resolve => setTimeout(resolve, time))
}

// failed
let start = new Date
doSomethingSlow(2000).then(() => {
    let finish = new Date
    // assert(finish - start > 5000)
    console.log("did it take longer than 5 seconds: ", finish - start > 5000)
    })

另外,请注意 mocha 对测试有时间限制。请参阅here 进行更改,但要了解限制是存在的,因为通常不赞成长时间运行的测试。您通常可以通过取消网络/文件访问来使测试同样有效且更快。

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 2022-10-20
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多