当我在 angular 2 中运行测试时,我在 Coverage Summary 部分的控制台命令上看到一些关键字输出为Statements, Branches, Functions....
我不知道到底是什么?
任何帮助为我解释这一点,谢谢。
我们在代码中使用了路由参数。但是在 jasmine karma 中执行单元测试时,我们遇到了以下错误。
TypeError: Cannot read property 'params' of undefined
TypeError: Cannot read property 'params' of undefined
at Object.<anonymous> (http://localhost:9876/base/src/test.ts:38586:20)
at ZoneDelegate.713.ZoneDelegate.invoke (http://localhost:9876/base/src/polyfills.ts:1599:26)
at ProxyZoneSpec.onInvoke (http://localhost:9876/base/src/test.ts:82238:39)
at ZoneDelegate.713.ZoneDelegate.invoke (http://localhost:9876/base/src/polyfills.ts:1598:32)
at Zone.713.Zone.run (http://localhost:9876/base/src/polyfills.ts:1359:43)
at Object.<anonymous> (http://localhost:9876/base/src/test.ts:81952:34)
at attemptSync (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1950:24)
at ZoneQueueRunner.QueueRunner.run (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1938:9)
at http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1962:16
at http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1905:9
at http://localhost:9876/base/src/test.ts:14790:17
at ZoneDelegate.713.ZoneDelegate.invoke (http://localhost:9876/base/src/polyfills.ts:1599:26)
at AsyncTestZoneSpec.onInvoke (http://localhost:9876/base/src/test.ts:81547:39)
at ProxyZoneSpec.onInvoke (http://localhost:9876/base/src/test.ts:82235:39)
at ZoneDelegate.713.ZoneDelegate.invoke (http://localhost:9876/base/src/polyfills.ts:1598:32)
Run Code Online (Sandbox Code Playgroud)
请在下面找到我们的 ts 文件:
import { Component, OnInit, AfterViewInit, EventEmitter, Output } from '@angular/core';
export class MyComponent implements OnInit, AfterViewInit { …Run Code Online (Sandbox Code Playgroud) unit-testing karma-jasmine karma-coverage routeparams angular
我是 angular 4 jasmine 单元测试的新手。
谢谢你的帮助。
登录组件:
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
import { HttpError } from '../core/http-error';
import { jsonFields } from '../app.constants';
import { LoggedUserData } from '../shared/model/loggedUserData';
import { Observable } from 'rxjs/Observable';
import { FormControl, Validators } from '@angular/forms';
import { LoginService } from '../shared/login.service';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss'] …Run Code Online (Sandbox Code Playgroud) jasmine karma-jasmine karma-coverage angular angular4-router
我有一个具有以下结构的应用程序:
my-application
+- pom.xml
+- app
| +- scripts
| | +- app.js
| | +- **/*.js
| +- 3rd-party-libs
+- build
+- node_modules
+- test
Run Code Online (Sandbox Code Playgroud)
我创建了pom.xml唯一一个运行SonarQube分析的人.否则,所有任务都由Grunt运行(测试与Karma一起运行).
内容pom.xml如下:
<properties>
<sonar.language>js</sonar.language>
<sonar.sourceEncoding>UTF-8</sonar.sourceEncoding>
<sonar.javascript.coveragePlugin>lcov</sonar.javascript.coveragePlugin>
<sonar.javascript.lcov.reportPath>build/karma/coverage/lcov.info</sonar.javascript.lcov.reportPath>
<sonar.exclusions>app/3rd-party-libs/**,node_modules/**</sonar.exclusions>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
</properties>
<build>
<sourceDirectory>app/scripts</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
</build>
Run Code Online (Sandbox Code Playgroud)
当我运行时grunt test,它创建一个build/karma/coverage/lcov.info包含以下信息:
TN:
SF:./app/scripts/app.js
FN:16,(anonymous_1)
FN:26,(anonymous_2)
FNF:2
...
Run Code Online (Sandbox Code Playgroud)
在SonarQube分析之后,仪表板显示0%的代码覆盖率.
我怀疑它中的路径SF:是错误的来源.因此,我已经改变了sonar.javascript.lcov.reportPath财产使用另一个lcov.info测试不同的值:app.js,./app.js,app/scripts/app.js,./app/scripts/app.js,但没有工作,保持覆盖率为0%.
我错过了什么?
为了以防万一,我在我的配置中有以下配置karma.conf.js:
coverageReporter: {
reporters: [ …Run Code Online (Sandbox Code Playgroud) 当 lcov 文件中的路径为绝对路径时,Sonar 不会检索我的项目的覆盖信息。对于文件:
TN:
SF:/mnt/vg01-data01/jenkins/<jenkins.myhost.com>/jenkins_home/workspace/<job1>/src/app.js
FN:,(anonymous_0)
FN:,(anonymous_1)
FNF:2
FNH:2
FNDA:1,(anonymous_0)
FNDA:2,(anonymous_1)
DA:3,1
DA:4,1
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:11,1
DA:18,1
DA:19,1
DA:22,2
DA:27,1
LF:11
LH:11
BRF:0
BRH:0
end_of_record
....
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:
...
05:06:27.565 INFO: Analysing [/srv/jenkins/<jenkins.myhost.com>/jenkins_home/workspace/<job1>/coverage/lcov.info]
05:06:27.574 DEBUG: Default value of zero will be saved for file: src/app.js
05:06:27.574 DEBUG: Because was not present in LCOV report.
05:06:27.578 DEBUG: Default value of zero will be saved for file: src/app.spec.js
05:06:27.578 DEBUG: Because was not present in LCOV report.
05:06:27.579 DEBUG: Default …Run Code Online (Sandbox Code Playgroud) javascript code-coverage karma-runner sonarqube karma-coverage
我正在尝试使用带有业力的 JUnit 报告器。
当我启动
$ ng test --watch=false --code-coverage
Run Code Online (Sandbox Code Playgroud)
它总是输出我
10% building modules 1/1 modules 0 active01 06 2017 11:57:51.797:ERROR
[reporter]: Can not load reporter "coverage-istanbul", it is not registered!
Run Code Online (Sandbox Code Playgroud)
问题是,我karma.conf.json没有提到伊斯坦布尔:
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular/cli'],
plugins: [
require('karma-jasmine'),
// require('karma-chrome-launcher'),
require('karma-phantomjs-launcher'),
require('karma-junit-reporter'),
require('karma-mocha-reporter'),
require('@angular/cli/plugins/karma')
],
files: [
{ pattern: './src/test.ts', watched: false }
],
preprocessors: {
'./src/test.ts': ['@angular/cli']
},
mime: {
'text/x-typescript': ['ts', 'tsx']
},
junitReporter: {
outputDir: 'coverage', // results …Run Code Online (Sandbox Code Playgroud) 我收到了一份空报告,它列出了文件,但没有填写百分比......知道是什么原因造成的吗?
错误信息:
Handlebars:访问已被拒绝解析属性“声明”,因为它不是其父级的“自己的属性”。
我的 package.json 文件:
"dependencies": {
"@angular/animations": "^9.0.4",
"@angular/cdk": "^9.1.0",
"@angular/common": "^9.0.4",
"@angular/compiler": "^9.0.4",
"@angular/core": "^9.0.4",
"@angular/forms": "^9.0.4",
"@angular/platform-browser": "^9.0.4",
"@angular/platform-browser-dynamic": "^9.0.4",
"@angular/router": "^9.0.4",
"@fullcalendar/core": "^4.4.0",
"chart.js": "^2.9.2",
"classlist.js": "^1.1.20150312",
"core-js": "^2.5.7",
"font-awesome": "^4.7.0",
"karma-coverage": "^1.1.1",
"karma-phantomjs-launcher": "^1.0.4",
"moment-timezone": "^0.5.17",
"ngx-clipboard": "^12.2.1",
"primeicons": "^2.0.0",
"primeng": "^9.0.0",
"quill": "^1.3.7",
"rxjs": "^6.5.3",
"tslib": "^1.10.0",
"web-animations-js": "^2.3.2",
"xlsx": "^0.15.1",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.900.4",
"@angular/cli": "^9.0.4",
"@angular/compiler-cli": "^9.0.4",
"@angular/language-service": "^9.0.4",
"@types/jasmine": "~2.8.3",
"@types/jasminewd2": "~2.0.2",
"@types/node": "^12.11.1",
"jasmine-core": "~2.8.0",
"jasmine-spec-reporter": …Run Code Online (Sandbox Code Playgroud) 我使用本指南http://karma-runner.github.io/0.8/config/coverage.html来设置我的 Karma-coverage 插件。此外,它通过 package.json 文件在本地安装,如下所示:
{
"name": "myApp",
"version": "0.1.0",
"devDependencies": {
"karma-jasmine": "latest",
"karma-coverage": "latest",
"karma-coffee-preprocessor": "latest",
"karma-chrome-launcher": "latest",
"coffee-script": "latest"
}
}
Run Code Online (Sandbox Code Playgroud)
我的 Karma.conf 如下所示:
// Karma configuration
// Generated on Sun Dec 07 2014 15:51:07 GMT+0100 (CET)
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to …Run Code Online (Sandbox Code Playgroud) 我喜欢使用karma-coverage为我的打字稿源文件生成一份报道.我的单元测试是用javascript编写的,我使用的是Jasmine Test框架.
我的文件夹结构如下所示:
node_modules/
app/
app.js
app.js.map
app.ts
components/
controllers/
SampleController.ts
directives/
filters/
services/
unittests/
karma.conf.js
components/
controllers/
SampleControllerTest.js
directives/
filters/
services/
Run Code Online (Sandbox Code Playgroud)
我的karma.conf.js
module.exports = function(config) {
config.set({
frameworks: ['jasmine'],
plugins: [
'karma-jasmine',
'karma-ng-html2js-preprocessor',
'karma-coverage',
'karma-phantomjs-launcher',
'karma-sourcemap-loader'
],
preprocessors: {
'../app/directives/controls/**/*Template.html' : [ 'ng-html2js' ],
// source files, that you wanna generate coverage for
// do not include tests or libraries
// (these files will be instrumented by Istanbul)
'../app/app.js' : ['sourcemap', 'coverage' ],
},
reporters: ['progress', 'coverage'],
// web …Run Code Online (Sandbox Code Playgroud) javascript typescript karma-runner karma-jasmine karma-coverage
当我尝试使用 karma jasmin 进行测试时,我收到此错误......
NullInjectorError: StaticInjectorError(DynamicTestModule)[DaterangepickerDirective -> LocaleService]:
StaticInjectorError(Platform: core)[DaterangepickerDirective -> LocaleService]:
NullInjectorError: No provider for LocaleService!
Run Code Online (Sandbox Code Playgroud)
我的组件
import { Component, OnInit } from '@angular/core';
import { NgxSpinnerService } from 'ngx-spinner';
import { ApiService } from '../../../services/api.service';
import * as moment from 'moment';
@Component({
selector: 'ngx-item-analytics',
templateUrl: './item-analytics.component.html',
styleUrls: ['./item-analytics.component.scss']
})
export class ItemAnalyticsComponent implements OnInit {
data: any;
data2: any;
showBarchart1: boolean = false;
showBarchart2: boolean = false;
maxDate: moment.Moment;
minDate: moment.Moment;
datepickerChanges:boolean = false;
dateGrouped:Date;
alwaysShowCalendars: boolean;
keepCalendarOpeningWithRange: …Run Code Online (Sandbox Code Playgroud) karma-coverage ×10
angular ×6
javascript ×4
karma-runner ×3
unit-testing ×3
sonarqube ×2
angular-cli ×1
angularjs ×1
jasmine ×1
lcov ×1
macos ×1
routeparams ×1
typescript ×1