如何使用Mocha Chai组织单元测试BDD的代码?
问题描述:
我试图使用摩卡/柴使用BDD风格的单元测试。不知道从哪里开始。以下是核心代码结构。假设getTemplates是一个Ajax调用,我如何处理应用程序的不同阶段。即在init函数中触及sh.setTemplates()之前,它已经经历了很少的条件。如何单元测试这些条件?如何使用Mocha Chai组织单元测试BDD的代码?
// Javascript
function myFunc(id){
var mf = this;
mf.id = id;
mf.init = function(){return init()};
mf.isIdValid = function(){return isIdValid()};
mf.setTemplates = function(){return setTemplates};
mf.getTemplates = function(){return getTemplates};
// Init
mf.init();
///////////////////////
function init(){
if(!id){
return false;
}
if(!sh.isIdValid()){
return false;
}
sh.setTemplates();
}
///////////////////////
function setTemplates(){
getTemplates(function(callBackTemplate){
if(!callbackTemplate){
return false;
}
// inject to dom
});
}
///////////////////////
// Async call
function getTemplates(){
return '<div>Test</div>';
}
}
///////////////////////////////////////
/////////////////////////////////////////
TEST JS Mocha/Chai
var expect = chai.expect;
describe('myFunc Class', function(){
var mf;
before(function(){
mf = new myFunc(1);
});
describe('mf.init()', function(){
it('should not result false', function(){
var result = mf.init();
expect(result).to.not.equal(false);
});
});
答
如何对这些条件进行单元测试?
使用以下过程:
- 创建一个分支功能
- 把断言分支功能
- 使用Variant作为参数
- 与truthy值调用一次
- 再次用虚假值调用它
参考
好运气,我一直在打我的头靠在与BDD同样的问题在墙上。如果我弄明白了,我会回答一个答案。 – PositiveGuy 2015-07-19 18:32:45