首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSDom业力角设置

JSDom业力角设置
EN

Stack Overflow用户
提问于 2020-04-23 12:12:21
回答 1查看 1.3K关注 0票数 3

我希望能够使用JSDOM作为浏览器,使用业力在角度上运行茉莉花测试。

我使用以下命令安装了jsdom和karma-jsdom启动程序:

代码语言:javascript
复制
npm install jsdom --save-dev
npm install karma-jsdom-launcher --save-dev

一旦安装了软件包,我就将插件添加到karma.conf.js中

代码语言:javascript
复制
require('karma-jsdom-launcher')

但是,当我使用命令ng test -browsers=jsdom运行测试时,我得到

代码语言:javascript
复制
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]

下面是我正在使用的版本

代码语言:javascript
复制
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",

我是不是遗漏了什么?如何使用JSDom而不是chrome浏览器运行测试?

EN

回答 1

Stack Overflow用户

发布于 2020-04-29 16:19:45

我能够复制上面描述的问题与你张贴的版本。

使用

代码语言:javascript
复制
"jsdom": "^16.2.2", 
"karma-jsdom-launcher": "^8.0.2",
"karma": "~4.3.0" 
"karma"-jasmine: "~2.0.1" 

我也犯了同样的错误:

代码语言:javascript
复制
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]错误已经消失,但测试仍未启动,因此当启动茉莉花测试时,控制台将挂起。

karma-jsdom-launcher的FAQ中,有一个已知的问题记录在这里。它说,如果使用源地图,业力启动器可以挂起。如果我们试图通过这样的方式添加angular.json来禁用"sourceMap: false"中的源代码映射:

代码语言:javascript
复制
"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": []
  }
},

真的很管用。我为此创建了一个演示,可以在这里查一下

但是,源代码映射必须禁用,这并不是很酷。这意味着您将无法在测试中使用断点,这可能是一个不方便的限制。

如果使用源代码地图的限制是痛苦的,那么值得考虑使用无头Chrome。关于使用无头Chrome 可以在这里找到的教程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61386944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档