2016-05-27 109 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'大概總結了我的做法。 –

相關問題