Jasmine: How to get name of current test
For anyone attempting to do this in Jasmine 2: You can introduce a subtle change to your declarations however that fix it. Instead of just doing:
it("name for it", function() {});
Define the it
as a variable:
var spec = it("name for it", function() {
console.log(spec.description); // prints "name for it"
});
This requires no plug-ins and works with standard Jasmine.
It's not pretty (introduces a global variable) but you can do it with a custom reporter:
// current-spec-reporter.js
global.currentSpec = null;
class CurrentSpecReporter {
specStarted(spec) {
global.currentSpec = spec;
}
specDone() {
global.currentSpec = null;
}
}
module.exports = CurrentSpecReporter;
Add it to jasmine when you add your other reporters...
const CurrentSpecReporter = require('./current-spec-reporter.js');
// ...
jasmine.getEnv().addReporter(new CurrentSpecReporter());
Then extract the test name during your test/setup as needed...
it('Should have an accessible description', () => {
expect(global.currentSpec.description).toBe('Should have an accessible description');
}
At last, see a sample of currentSpec
structure:
{
"id":"spec15",
"description":"test1",
"fullName":"My test category test1",
"failedExpectations":[],
"passedExpectations":[],
"deprecationWarnings":[],
"pendingReason":"",
"duration":null,
"properties":null
}
jasmine.getEnv().currentSpec.description