2016-05-13 114 views
0

我有一个模块,我加载胡子模板文件。我想写一个单元测试。我正尝试使用摩卡,柴和rewire。在node.js中编写单元测试的最佳方法是什么?

这里是我的module.js:

var winston = require('winston'); 
var fs = require('fs'); 
var config = require('./config.js'); 
exports.logger = new winston.Logger({ 
    transports: [ 
     new winston.transports.File(config.logger_config.file_transport), 
     new winston.transports.Console(config.logger_config.console_transport) 
    ], 
    exitOnError: false 
}); 
exports.readTemplateFile = function(templateFile, callback) { 
     fs.readFile(config.base_directory + templateFile + '.tpl.xml', 'utf8', function (err, data) { 
      if (err) { 
       logger.error('Could not read template ' + templateFile + ': ' + err); 
      } 
      callback(data); 
     }); 
    }; 

在我用胡子做模板的东西回调函数。 什么是测试这个最好的方法?

也许我将不得不重新链接fs.readFile?由于在执行测试时文件不在那里。温斯顿记录器也是一个我感兴趣的部分,我不确定它是否会被初始化,如果我在摩卡测试中导入它。我的第一个测试显示记录器是未定义的。

回答

3

最重要的单元测试原理之一是测试非常小的一段代码。为了达到这个目的,你应该把模块或存根调用到不属于测试代码的函数(在这种情况下是readFile和logger.error)。对于提供的代码就可以使三个测试用例:

  • 调用READFILE用正确的参数
  • 调用错误,如果犯错存在
  • 调用回调函数与正确的参数

您的回调函数应该是在此代码之外进行测试,例如通过提供假数据作为参数:

define('Some test',() => { 
    it('should return true',() => { 
    expect(callbackFunction('fakeData').to.be.ok); 
    }); 
}); 
相关问题