如何在mocha测试函数与console.log语句?

时间:2016-05-08 06:39:07

标签: javascript mocha

让我们说,我有一个功能:

function consoleOutput(param) {
  var newParam = param * param;  
  console.log(newParam);
}

如何在Mocha中测试,此功能将正常工作(param将乘以2并输出到控制台)。感谢。

2 个答案:

答案 0 :(得分:22)

这些类型的测试的一个很棒的库是Sinon。它可以用于" hook"现有函数并跟踪这些函数的调用方式。

例如:

const sinon  = require('sinon');
const assert = require('assert');

// the function to test
function consoleOutput(param) {
  var newParam = param * param;  
  console.log(newParam);
}

it('should log the correct value to console', () => {
  // "spy" on `console.log()`
  let spy = sinon.spy(console, 'log');

  // call the function that needs to be tested
  consoleOutput(5);

  // assert that it was called with the correct value
  assert(spy.calledWith(25));

  // restore the original function
  spy.restore();
});

这样做的好处是你不需要改变原来的功能(在这种情况下,这不是什么大问题,但在大型项目中可能并不总是可行)。

答案 1 :(得分:-6)

请看下面的代码,您将了解mocha测试用例

var assert = require('chai').assert;

// Function to be Tested
function consoleOutput(param) {
  var newParam = param * param;  
  console.log(newParam);
  return newParam;
}

// Mocha Test Case
describe('Mocha Test Case', function() {
    it('Square Root', function(done) {
        var sqrt = consoleOutput(5);
        assert.equal(sqrt, 25);
        done();
    });
});

更新(2017年3月25日):

查看以下答案以获得最佳实践