gpt4 book ai didi

node.js - 为什么在使用 jest 测试 Node 应用程序时看不到控制台日志输出

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:41 24 4
gpt4 key购买 nike

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

my-module.js:

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

my-module-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 输出?

最佳答案

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

下划线“_”被模拟并且没有可见的错误,所以执行从来没有到达 console.log。

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

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

    “开 Jest ”:{
    “unmockedModulePathPatterns”:[“/node_modules/”]
    }

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

    jest.autoMockOff();

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

    jest.unmock('下划线');

关于node.js - 为什么在使用 jest 测试 Node 应用程序时看不到控制台日志输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28371741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com