在使用jest测试节点应用程序时,为什么我看不到控制台日志输出

时间:2015-02-06 17:49:30

标签: node.js testing output console.log jestjs

我不熟悉使用jest进行测试,但我似乎无法从我想测试的模块中看到控制台输出。

  

MY-module.js:

var _ = require('underscore');
exports.filter = function(data) {
    if(_.isArray(data)) {
        console.log("Data is: " + data);
        data = data[0];
    }
return data;
}
  

我的模块-test.js:

jest.dontMock('../my-module');

var testdata = [{label: "test"}, {id: 5}];

describe('test my module', function(){
    it('changes some data' , function(){
        var transformedData = require('../my-module').filter(testdata);
        expect(transformedData).toBe(testdata[0]);
    });
});

为什么jest吞下“my-module.js”中的console.log输出?

1 个答案:

答案 0 :(得分:4)

Jest似乎默认模拟了一切。这是我遇到的问题。

下划线" _"被嘲笑并且没有可见的错误,所以执行从来没有进入console.log。

有三种可能性(据我所知)可以防止出现这种情况:

  1. 在package.json文件中,防止模拟节点模块(包括下划线)

    "jest": { "unmockedModulePathPatterns": ["/node_modules/"] }

  2. 使用以下方法明确阻止测试文件中的自动模拟:

    jest.autoMockOff();

  3. 明确地将下划线排除在模拟之外:

    jest.unmock('underscore');