How to programmatically skip a test in mocha?
You can skip tests by placing an x in front of the describe or it block, or placing a .skip
after it.
xit('should work', function (done) {});
describe.skip('features', function() {});
You can also run a single test by placing a .only
on the test. for instance
describe('feature 1', function() {});
describe.only('feature 2', function() {});
describe('feature 3', function() {});
Only the feature 2 block would run in this case.
There doesn't appear to be a way to programmatically skip tests, but you could just do some sort of check in a beforeEach
statement and only run the test if the flag was set.
beforeEach(function(){
if (wrongEnvironment){
runTest = false
}
}
describe('feature', function(){
if(runTest){
it('should work', function(){
// Test would not run or show up if runTest was false,
}
}
}
This answer does work for ES6.
Instead of:
describe('your describe block', () => {
You want:
(condition ? describe : describe.skip)('your describe block', () => {
This conditionally skips all tests in the describe block IF the condition is false.
Or, instead of:
it('your it block', () => {
You want:
(condition ? it : it.skip)('your it block', () => {
This conditionally skips one test IF the condition is false.
Use Mocha's skip()
function
It can be used to either statically to disable a test or entire suite, or dynamically skip it at runtime.
Here's an example runtime usage:
it('should only test in the correct environment', function() {
if (/* check test environment */) {
// make assertions
} else {
this.skip();
}
});