【问题标题】:Why can't I see console log output when testing node apps with jest为什么我在用 jest 测试节点应用程序时看不到控制台日志输出
【发布时间】:2015-04-06 22:44:47
【问题描述】:

我是 jest 测试的新手,我似乎无法看到我想测试的模块的控制台输出。

我的模块.js:

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

我的模块测试.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]);
    });
});

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

【问题讨论】:

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


    【解决方案1】:

    默认情况下,Jest 似乎会模拟所有内容。这是我遇到的问题。

    下划线“_”被嘲笑了,没有可见的错误,所以执行从来没有到达过console.log。

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

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

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

    2. 使用以下命令明确防止在您的测试文件中进行自动模拟:

      jest.autoMockOff();

    3. 从模拟中明确排除下划线:

      jest.unmock('underscore');

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 2017-12-23
      • 2011-10-06
      • 1970-01-01
      相关资源
      最近更新 更多