【问题标题】:Order with nested describe带有嵌套描述的订单
【发布时间】:2019-03-25 10:58:35
【问题描述】:

我正在使用 mocha-steps 来构建测试序列。在我的情况下,我们称它们为“主要”、测试和每个子测试。看起来像:

  1. 测试 1
    • 子测试
    • 子测试
  2. 测试 2
    • 子测试
    • 子测试

step("Test 1", () => {})
describe("Sub-test 1", () => {
  it("Sub-Test 1", () => {})
  it("Sub-Test 1", () => {})
})
step("Test 2", () => {})
describe("Sub-test 2", () => {
  it("Sub-Test 2", () => {})
  it("Sub-Test 2", () => {})
})

所以我希望它们按照书面形式运行,但实际上是:

✓ Test 1
✓ Test 2
  Sub-test 1
    ✓ Sub-Test 1
    ✓ Sub-Test 1
  Sub-test 2
     ✓ Sub-Test 2
     ✓ Sub-Test 2

在这种情况下,如果“测试 2”失败,子测试根本不会运行,但我需要完成“子测试 1”,因为它们仅依赖于“测试 1”而不是“测试 2”

我试图用不同的“描述”将所有测试分开,但是“步骤”根本不起作用

我的解决方案:

我发现mocha执行describe的默认方式是:

  • 其他代码
  • 描述

这种行为在 mocha/lib/runner.js 中定义 所以我什么也没找到,然后在需要mocha 之后自己重新定义跑步者(和套件)

我仍然想在不更改 mocha 代码的情况下找到解决方案。 如果有人感兴趣,我可以将代码粘贴到 gist 上。

【问题讨论】:

    标签: node.js mocha.js


    【解决方案1】:

    当第 1 步成功时嵌套它们并设置一个标志,然后在第 2 步中断言该标志:

    const assert = require('assert');
    
    let step1Success = false;
    describe('Test 1', function () {
      step('Test 1', function () { 
        // ... Test 1 code
        step1Success = true;
      })
      describe('Sub-test 1', function () {
        it('Sub-Test 1', function () { })
        it('Sub-Test 1', function () { })
      })
    })
    describe('Test 2', function () {
      step('Test 2', function () {
        assert.ok(step1Success);
        // ... Test 2 code
      })
      describe('Sub-test 2', function () {
        it('Sub-Test 2', function () { })
        it('Sub-Test 2', function () { })
      })
    })
    

    详情

    "Any failing step will abort the parent describe immediately" 因此,step 中的任何一个失败都将中止其父 describe,并且不会运行相关的子测试。

    此外,如果'Test 1' 未完成,则不会设置标志,step 2 将立即失败。

    (自"passing arrow functions (aka "lambdas") to Mocha is discouraged"以来使用的普通函数)

    【讨论】:

    • 这行不通,我已经试过了,只要stepsdescribes 不同,它们不会相互影响
    • 主要问题是我想“测试 2”依赖于“测试 1”的结果,所以子测试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2014-06-05
    • 2011-10-30
    相关资源
    最近更新 更多