How can I retrieve the current test's name within a Mocha test?
If you are directly inside a callback to describe
, you can use this.title
for the title of the describe
or this.fullTitle()
to get the hierarchical title of the describe
(ancestors' titles + the title of this one). If you are inside a callback to it
you can use this.test.title
or this.test.fullTitle()
respectively. So:
describe("top", function() {
console.log(this.title);
console.log(this.fullTitle());
it("test", function () {
console.log(this.test.title);
console.log(this.test.fullTitle());
});
});
The console.log
statements above will output:
top
top
test
top test
Here's a fuller example that shows how the titles change depending on nesting:
function dump () {
console.log("running: (fullTitle)", this.test.fullTitle(), "(title)",
this.test.title);
}
function directDump() {
console.log("running (direct): (fullTitle)", this.fullTitle(), "(title)",
this.title);
}
describe("top", function () {
directDump.call(this);
it("test 1", dump);
it("test 2", dump);
describe("level 1", function () {
directDump.call(this);
it("test 1", dump);
it("test 2", dump);
});
});
The console.log
statements will output:
running (direct): (fullTitle) top (title) top
running (direct): (fullTitle) top level 1 (title) level 1
running: (fullTitle) top test 1 (title) test 1
running: (fullTitle) top test 2 (title) test 2
running: (fullTitle) top level 1 test 1 (title) test 1
running: (fullTitle) top level 1 test 2 (title) test 2
From within a beforeEach
, try this.currentTest.title
.
Example:
beforeEach(function(){
console.log(this.currentTest.title);
})
Using Mocha 3.4.1
.