如何在Karma测试中输出日志?终端无日志显示问题排查
Karma测试中console.log/console.error无日志输出的解决方法
检查Karma配置文件的日志级别
在karma.conf.js中,默认的LOG_WARN级别会过滤掉console.log这类普通信息,需将logLevel设置为更宽松的级别:module.exports = function(config) { config.set({ // ...其他配置项 logLevel: config.LOG_INFO, // 或config.LOG_DEBUG以获取更详细日志 }); };修正异步测试的时序问题
你的测试使用async(() => {})但内部用.then()链式调用,可能出现Karma在异步回调执行前就结束测试的情况。改用async/await语法确保Karma等待异步操作完成:it('should not delete card on deleteCard method if user cancels', async(async () => { const eventMock = jasmine.createSpyObj('event', ['preventDefault', 'stopPropagation']); const testCard = testCards[1]; cardsServiceSpy.deleteCard.calls.reset(); actionSheetDismissService.canDismiss.and.returnValue(Promise.resolve(false)); console.log(testCard); const dataOnDelete = await component.deleteCard(eventMock, testCard); console.log(dataOnDelete); expect(dataOnDelete).toBe(testCard.id); expect(cardsServiceSpy.deleteCard).not.toHaveBeenCalled(); expect(component.cards.length).toBe(3); }));配置无头浏览器转发日志
若使用ChromeHeadless这类无头浏览器,需添加参数让其将console输出转发到终端:module.exports = function(config) { config.set({ // ...其他配置项 browsers: ['ChromeHeadless'], customLaunchers: { ChromeHeadless: { base: 'Chrome', flags: [ '--headless', '--disable-gpu', '--enable-logging', '--v=1', '--log-level=0', ] } }, }); };排查插件对console输出的拦截
部分Karma报告插件(如karma-jasmine-html-reporter)会将console输出重定向到HTML测试报告而非终端,可暂时移除该插件,或调整启动参数确保终端捕获日志。
内容的提问来源于stack exchange,提问作者GTLayer
相关产品推荐
相关产品推荐

