rocha中文文档|rocha js中文教程|解析

npm npmdoc 2年前 (2021-12-23) 484次浏览

rocha中文文档|rocha js中文教程|解析

安装命令:npm i rocha

rocha(又名“ROKKA”随机摩卡)

运行 Mocha 单元测试但随机化它们的顺序

新产品管理

构建状态
语义释放
手动
标准款式
翻新应用徽章

端到端测试

rocha-test —— 构建状态

安装和使用

大多数情况下应该就像摩卡咖啡一样

npm install -g rocha
rocha src/*-spec.js

如果事情没有按预期工作,请打开一个问题

因为我使用了一些 ES6,并且 Ubuntu 不能很好地与--harmony
flag(
今天允许使用一些 ES6)一起使用,所以这个包需要 Node >= 4。

演示截屏

asciicast

在这个演示中,我展示了 Rocha 如何在测试中找到排序问题(见下面的例子)。

例子

spec/tricky-spec.js 中的测试总是在 Mocha 中通过,但仅仅是因为它们的执行顺序是 1 – 2 – 3。

describe('example', function () {
  var foo
  it('runs test 1', function () {
    foo = 42
    console.log('polluted the environment')
  })
  it('runs test 2', function () {})
  it('runs test 3', function () {
    console.assert(foo === 42, 'foo is 42', foo)
  })
})

该测试在 Mocha 下通过​​,但这是非常不可靠的:微小的代码更改可能会无缘无故地破坏测试。找到问题也很痛苦。

使用 Mocha 运行测试

> mocha spec/tricky-spec.js
  example
polluted the environment
    ✓ runs test 1
    ✓ runs test 2
    ✓ runs test 3
  3 passing (8ms)

使用 Rocha 运行测试

> rocha spec/tricky-spec.js
shuffling 3 unit tests in "example"
  example
    1) runs test 3
polluted the environment
    ✓ runs test 1
    ✓ runs test 2
  2 passing (10ms)
  1 failing
  1) example runs test 3:
      AssertionError: foo is 42 undefined

Rocha 获取每个套件并洗牌其单元测试列表。如果有足够的测试运行,这应该会使由于共享数据或环境污染,甚至对 JavaScript并发性理解不足而导致的问题可见

笔记

不是每个随机顺序都会

  • 如此随机以至于它不同于顺序
  • 足以解决所有问题

重新创建失败的订单

如果单元测试失败,执行的订单将保存在 JSON 文件中.rocha.json对于包含的示例rocha spec/*-spec.js,它将是这样的

[{
  "title": "fixed example",
  "tests": [
    "runs test 1",
    "runs test 2",
    "runs test 3"
  ]
}, {
  "title": "tricky example",
  "tests": [
    "runs test 1",
    "runs test 3",
    "runs test 2"
  ]
}]

当你rocha再次启动时,它会找到这个文件,并会以相同的顺序对测试重新排序
,再次重新创建失败。

如果测试通过,.rocha.json则删除文件,因此下次运行将再次随机。

我们应该如何测试?

每个单元测试不应该依赖于其他测试运行的顺序。在上面的例子中,在每次单元测试之前重构测试以重置变量,参见spec/fixed.spec.js

describe('fixed example', function () {
  var foo
  beforeEach(function () {
    foo = undefined
  })
  ...
});

现在每个单元测试都从相同的值开始(至少在这个例子中)。

选项

详细日志– 要在 Rocha 运行时查看诊断消息,请DEBUG=rocha
在运行时
设置环境变量

DEBUG=rocha rocha <spec>

在端到端测试期间,使用启用详细日志记录 DEBUG=rocha:e2e

小字

作者:Gleb Bahmutov © 2015

许可证:MIT – 对代码做任何事情,但如果它不起作用,请不要怪我。

传播这个词:tweet、在github上star等。

支持:如果您发现此模块有任何问题,请在 Github 上发送电子邮件/推特/
公开问题

麻省理工学院执照

版权所有 (c) 2015 Gleb Bahmutov

特此授予任何人免费获得本软件和相关文档文件(“软件”)副本的许可,不受限制地处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或出售软件的副本,并允许向其提供软件的人员这样做,但须符合以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。

该软件“按原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担责任,无论是在合同诉讼、侵权行为或其他方面,由软件或软件的使用或使用或其他原因引起的或与之相关的软件。

项目贡献人员列表:


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:rocha中文文档|rocha js中文教程|解析
喜欢 (0)
.excerpt .focus {display:none}