为什么在使用 jest 测试节点应用程序时看不到控制台日志输出
Why can't I see console log output when testing node apps with jest
我是 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]);
});
});
为什么开玩笑吞噬了我在 "my-module.js" 中的 console.log 输出?
Jest 似乎默认模拟所有内容。这是我遇到的问题。
下划线“_”被模拟并且没有可见的错误,所以执行从来没有到达 console.log。
有三种可能性(据我所知)可以防止这种情况发生:
在你的 package.json 文件中,防止模拟节点模块(包括下划线)
"jest": {
"unmockedModulePathPatterns": ["/node_modules/"]
}
使用以下方法明确阻止测试文件中的自动模拟:
jest.autoMockOff();
从模拟中明确排除下划线:
jest.unmock('underscore');
我是 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]);
});
});
为什么开玩笑吞噬了我在 "my-module.js" 中的 console.log 输出?
Jest 似乎默认模拟所有内容。这是我遇到的问题。
下划线“_”被模拟并且没有可见的错误,所以执行从来没有到达 console.log。
有三种可能性(据我所知)可以防止这种情况发生:
在你的 package.json 文件中,防止模拟节点模块(包括下划线)
"jest": { "unmockedModulePathPatterns": ["/node_modules/"] }
使用以下方法明确阻止测试文件中的自动模拟:
jest.autoMockOff();
从模拟中明确排除下划线:
jest.unmock('underscore');