JSDom因果报应角度设置



我希望能够使用JSDOM作为浏览器,使用因果报应在angular中运行jasmine测试。

我使用以下命令安装了jsdomkarma jsdom启动器

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",

我是不是错过了什么?如何使用JSDom而不是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测试时挂起。

karma-jsdom-launcher的常见问题解答中,这里记录了一个已知的问题。它说,如果使用源地图,因果报应发射器可以挂起。如果我们尝试通过以下方式添加"sourceMap: false"来禁用angular.json中的源映射:

"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的教程可以在这里找到。

相关内容

  • 没有找到相关文章

最新更新