2014-08-28 135 views
3

我试图使用摩卡/柴使用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); 
    }); 


}); 
+0

好运气,我一直在打我的头靠在与BDD同样的问题在墙上。如果我弄明白了,我会回答一个答案。 – PositiveGuy 2015-07-19 18:32:45

回答