Is there a way to get the current spec name from within the running test?
Basically I want to save a file, eg. using a function saveFile()
, with the nam
This worked for me
console.log(expect.getState().currentTestName);
I found that the only possible way was through the use of expect()
, which contains the spec name in its this
. doing something like
expect.extend({
async toSaveFile(data) {
fs.writeFileSync(`${this.currentTestName}.txt`, data)
return { pass: true };
},
});
allows to then do
expect().toSaveFile('contents of the file');
it's definitely a hack, but it's the only way I could find to get a reference to the spec name. there is also this.testPath
that indicates the test file
Not sure how @Giacomo concluded that was "the only possible" way :) since there's this alternative mentioned in this GitHub issue, which makes the test name accessible directly in the test via jasmine['currentTest'].fullName
, no extend
needed.
module.exports = {
setupFilesAfterEnv: ['./jest.setup.js'],
.................
};
// Patch tests to include their own name
jasmine.getEnv().addReporter({
specStarted: result => jasmine.currentTest = result,
specDone: result => jasmine.currentTest = result,
});
describe('Test description', () => {
beforeEach(() => console.log('Before test', jasmine['currentTest'].fullName));
test(...);
});