How to skip to next next describe on error in Mocha?

微笑、不失礼 提交于 2019-12-24 00:59:40

问题


I have a bunch of describes that test different parts of an API. In one section, all the tests are dependent on one test succeeding. I want to make Mocha run the first test, and if it fails, skip all following tests and run the next test suite for the next section of the API.

mocha --bail would stop testing altogether after the first fail, and won't continue to the next section.

mocha-steps is a viable solution, but I prefer not to use any external libraries. In addition, it doesn't skip steps after the failure, it doesn't print them altogether. Like I said, it's a viable solution, but not ideal.

What would be the best way to implement this behavior in vanilla Mocha?


回答1:


Put what you call your "first test" in a before hook inside a describe block that contains all the other tests:

describe("bunch of related tests", function () {
    before(function () {
        // "first test" here
    });

    it("test 1", function () { ... });
    it("test 2", function () { ... });
    // ...
});

This is the proper way in "vanilla Mocha" to set a dependency between the code in the before hook and each of the tests. If the before hook fails, Mocha will report it, and it will skip all the tests in the describe block. If you have other tests elsewhere, they will still run.




回答2:


Although I up-voted the accepted answer, I wasn't able to get a Mocha it test to run inside a before function. Instead I had to separate the first test into its own describe and set a variable if the test passed, then check the variable in the before of the describe containing all the other tests.

let passed = false
describe('first test', function() {
  it('run the first test', function(done) {
    if (theTestPassed)
      passed = true
    done()
  })
})

describe('rest of the tests', function() {
  before(function() {
    if (!passed)
      throw new Error('skip rest of the tests')
  });
  it('second test', ...)
  it('third test', ...)
});


来源:https://stackoverflow.com/questions/35391008/how-to-skip-to-next-next-describe-on-error-in-mocha

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!