angular - JSDom 业力角度设置
问题描述
我希望能够使用 JSDOM 作为浏览器来使用 karma 以角度运行 jasmine 测试。
我使用以下命令安装了jsdom和karma-jsdom-launcher :
npm install jsdom --save-dev
npm install karma-jsdom-launcher --save-dev
安装软件包后,我将插件添加到 karma.conf.js
require('karma-jsdom-launcher')
但是,当我使用命令ng test --browsers=jsdom运行测试时,我得到
10% building 4/4 modules 0 active23 04 2020 13:09:45.095:INFO [launcher]: Starting browser jsdom
23 04 2020 13:09:57.422:WARN [karma]: No captured browser, open http://localhost:9877/
Error: Uncaught [TypeError: Cannot read property 'origin' of undefined]
以下是我正在使用的版本
Node version - 12
Angular version - 9
"jsdom": "^16.2.2",
"karma": "~4.3.0",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~2.1.0",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.2",
"karma-jsdom-launcher": "^8.0.2",
我错过了什么吗?如何使用 JSDo 而不是 chrome 浏览器运行我的测试?
解决方案
我能够使用您发布的版本重现上述问题。
和
"jsdom": "^16.2.2",
"karma-jsdom-launcher": "^8.0.2",
"karma": "~4.3.0"
"karma"-jasmine: "~2.0.1"
我得到了同样的错误:
10% building 4/4 modules 0 active23 04 2020 13:09:45.095:INFO [launcher]: Starting browser jsdom
23 04 2020 13:09:57.422:WARN [karma]: No captured browser, open http://localhost:9877/
Error: Uncaught [TypeError: Cannot read property 'origin' of undefined]
更新karma
到~5.0.0
和karma-jasmine
到~3.0.1
后Error: Uncaught [TypeError: Cannot read property 'origin' of undefined]
错误消失了,但测试仍然没有启动,当应该启动 Jasmine 测试时控制台挂起。
在 FAQ 中karma-jsdom-launcher
有一个已知问题 记录在这里。它说,如果使用源地图,业力启动器可能会挂起。如果我们尝试angular.json
通过添加"sourceMap: false"
这种方式禁用源映射:
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"sourceMap": false,
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/styles.scss"
],
"scripts": []
}
},
真的行。我为此创建了一个演示,可以在这里查看。
但是,必须禁用源映射并不酷。这意味着您将无法在测试中使用断点,这可能是一个不便的限制。
如果源地图的限制很痛苦,那么值得考虑使用 Headless Chrome。可以在此处找到有关使用 Headless Chrome 的教程。
推荐阅读
- java - 使用默认格式的 Elasticsearch 日期解析问题
- r - Plotly:如何为每个数据设置背景颜色
- reactjs - 如何在 redux 选择器中按 id 获取帖子
- php - 将产品显示在它们所属的类别之下
- swift - 如果枚举的案例具有关联类型,是否可以在没有关联数据的情况下获取案例名称?
- windows - 将错误代码从子 cmd 提示符批量返回到其父 cmd 提示符
- java - 如何让计时器在后台运行以在特定时间段后执行操作?
- pytorch - Pytorch Sigmoid 函数是什么
- mysql - 我应该标准化数据库中的时间记录吗?
- tomcat - 亚马逊 ec2 centos 上的 Essl epush 服务器设置问题