如何为Office Excel AddIn配置Karma和Jasmine并解决页面重载问题
错误原因
该错误是Karma运行测试过程中浏览器上下文被强制刷新/跳转导致的,你的场景下核心诱因是加载的线上office.js在普通Chrome(非Office宿主环境)运行时,自带的宿主检测逻辑会触发页面跳转,破坏了Karma的测试运行上下文。
解决方案
- 替换线上Office.js为本地Mock版本
不要直接加载线上的office.js,新建本地Mock文件模拟Office初始化逻辑,避免跳转逻辑触发。示例Mock文件test/office-mock.js内容如下:
window.Office = { initialize: () => { document.dispatchEvent(new Event("Office.initialize")); }, // 可按需补充你用到的Excel相关API Mock context: { workbook: {} } }; // 立即触发初始化完成事件 window.Office.initialize();
修改karma.conf.js的files配置,替换Office.js引入路径:
files: [ 'test/office-mock.js', 'src/**/**.spec.ts' ],
- 修正预处理规则
你当前配置会给所有.ts文件(包括测试用例文件)注入coverage插桩代码,插桩逻辑可能带来额外全局副作用,修改规则仅对业务代码做插桩:
preprocessors: { // 仅匹配非.spec后缀的业务ts文件 'src/**/!(*.spec).ts': ["karma-typescript", 'coverage'] },
- 修正配置拼写错误+添加上下文校验宽松配置
你原配置中jasmine配置项存在拼写错误,同时可添加配置放宽Karma的上下文跳转校验:
client: { clearContext: false, runInParent: true, jasmine: { random: false, seed: '0', // 修正原拼写错误 stopOnFailue -> stopOnFailure stopOnFailure: false } }, crossOriginAttribute: false,
完成以上修改后重启Karma即可解决报错。
内容的提问来源于stack exchange,提问作者Edward
相关产品推荐
相关产品推荐

