2016-05-27 133 views
1

我正在使用nightwatch运行我的端到端测试,但我想在运行时基于某些全局设置有条件地运行某些测试。在运行时使用Nightwatchjs有条件地运行测试

// globals.js 
module.exports = { 
    FLAG: true 
}; 

// test.js 
describe('Something',() => { 
    it('should do something', client => { 
     if (client.globals.FLAG) { 
      expect(1).to.equal(1); 
     } 
    }); 
}); 

上述作品很好,但我想沉默的整个测试和条件包括it如:

// test.js 
describe('Something',() => { 
    // client does not exist out here so it does not work. 
    if (client.globals.FLAG) { 
     it('should do something', client => { 
      expect(1).to.equal(1); 
     }); 
    } 
}); 

我知道我可以在nightwatch.js定义它们和排除文件跳过测试等等,但那不是我可以在这个实现中使用的方法。另一个解决方案可能是使用标签,但我不确定这是可能的使用摩卡。

回答

0

你可以导入你的模块globals.js访问在第二个例子中的标志:

// test.js 

const globals = require('../globals.js'); 

describe('Something',() => { 

    if (globals.FLAG) { 
     it('should do something', client => { 
      expect(1).to.equal(1); 
     }); 
    } 
}); 

你也可以创建一个函数忽略测试时的条件是:

// test.js 

const FLAG = require('../globals.js').FLAG; 
const not = function(v){ return {it: v ? function(){}: it} }; 

describe('Something',() => { 

    not(FLAG).it('should do something', client => { 
     expect(1).to.equal(1); 
    }); 

}); 
+0

这个漂亮用我自定义的语法'when.SOMETHING.it'大概总结了我的做法。 –

相关问题