omdel omdel - 6 months ago 17
Node.js Question

detecting test failures from within afterEach hooks in Mocha

I'm trying to create an afterEach hook with logic that should only fire if the previous test failed. For example:

it("some_test1", function(){
// something that could fail
})

it("some_test2", function(){
// something that could fail
})

afterEach(function(){
if (some_test_failed) {
// do something to respond to the failing test
} else {
// do nothing and continue to next test
}
})


However, I have no known way of detecting if a test failed from within the afterEach hook. Is there some sort of event listener I can attach to mocha? Maybe something like this:

myTests.on("error", function(){ /* ... */ })

Answer

You can use this.currentTest.state (not sure when this was introduced):

afterEach(function() {
  if (this.currentTest.state == 'failed') {
    // ...
  }
});