VS-Code 错误的单元测试类型(Mocha&Chai 而不是 Jasmine)
VS-Code wrong Types for Unit-Tests (Mocha&Chai instead of Jasmine)
我有一个离子项目,我想用 Cypress 进行 e2e 测试,用 Jasmine 进行单元测试。
在我将 cypress 包添加到 package.json 并开始编写第一个 e2e-tests 之后,VS-Code 在我的单元测试的 spec.ts 文件中显示了一些错误。
问题是,VS-Code 假定我正在使用 Mocha 和 Chai 进行测试。
我可以 运行 测试没有错误。
这是我的 tsconfig.json 文件:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"dec
laration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
还有我的 tsconfig.spec.json 文件:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"module": "commonjs",
"types": [
"jasmine",
"node"
]
},
"files": [
"test.ts",
"polyfills.ts",
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}
最后我的依赖来自 package.json:
"dependencies": {
"@angular/common": "~6.1.1",
"@angular/core": "~6.1.1",
"@angular/forms": "~6.1.1",
"@angular/http": "~6.1.1",
"@angular/platform-browser": "~6.1.1",
"@angular/platform-browser-dynamic": "~6.1.1",
"@angular/pwa": "^0.8.0-beta.2",
"@angular/router": "~6.1.1",
"@angular/service-worker": "~6.1.1",
"@ionic-native/core": "5.0.0-beta.14",
"@ionic-native/splash-screen": "5.0.0-beta.14",
"@ionic-native/status-bar": "5.0.0-beta.14",
"@ionic/angular": "^4.0.0-beta.0",
"@ngxs/devtools-plugin": "^3.2.0",
"@ngxs/router-plugin": "^3.2.0",
"@ngxs/store": "^3.2.0",
"child_process": "^1.0.2",
"core-js": "^2.5.3",
"karma-junit-reporter": "^1.2.0",
"prompt": "^1.0.0",
"rxjs": "6.2.2",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular-devkit/architect": "~0.7.2",
"@angular-devkit/build-angular": "~0.7.2",
"@angular-devkit/core": "~0.7.2",
"@angular-devkit/schematics": "~0.7.2",
"@angular/cli": "^6.2.0-beta.2",
"@angular/compiler": "~6.1.1",
"@angular/compiler-cli": "~6.1.1",
"@angular/language-service": "~6.1.1",
"@compodoc/compodoc": "^1.1.3",
"@ionic/ng-toolkit": "^1.0.0",
"@ionic/schematics-angular": "^1.0.0",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~10.5.2",
"codelyzer": "~4.4.2",
"cypress": "^3.1.0",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.0",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"start-server-and-test": "^1.7.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~2.7.2"
}
如何解决这些测试框架的困惑?
亲切的问候,
大卫
VS 默认获取 tsconfig.json
个文件。由于您没有在其中指定 types
字段,它会从 @types
目录中获取所有类型。可能的解决方案是在嵌套文件夹中创建 tsconfig.json
而不是 tsconfig.spec.json
文件,并在其中指定 types
字段。
我有一个离子项目,我想用 Cypress 进行 e2e 测试,用 Jasmine 进行单元测试。 在我将 cypress 包添加到 package.json 并开始编写第一个 e2e-tests 之后,VS-Code 在我的单元测试的 spec.ts 文件中显示了一些错误。 问题是,VS-Code 假定我正在使用 Mocha 和 Chai 进行测试。
我可以 运行 测试没有错误。
这是我的 tsconfig.json 文件:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"dec
laration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
还有我的 tsconfig.spec.json 文件:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"module": "commonjs",
"types": [
"jasmine",
"node"
]
},
"files": [
"test.ts",
"polyfills.ts",
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}
最后我的依赖来自 package.json:
"dependencies": {
"@angular/common": "~6.1.1",
"@angular/core": "~6.1.1",
"@angular/forms": "~6.1.1",
"@angular/http": "~6.1.1",
"@angular/platform-browser": "~6.1.1",
"@angular/platform-browser-dynamic": "~6.1.1",
"@angular/pwa": "^0.8.0-beta.2",
"@angular/router": "~6.1.1",
"@angular/service-worker": "~6.1.1",
"@ionic-native/core": "5.0.0-beta.14",
"@ionic-native/splash-screen": "5.0.0-beta.14",
"@ionic-native/status-bar": "5.0.0-beta.14",
"@ionic/angular": "^4.0.0-beta.0",
"@ngxs/devtools-plugin": "^3.2.0",
"@ngxs/router-plugin": "^3.2.0",
"@ngxs/store": "^3.2.0",
"child_process": "^1.0.2",
"core-js": "^2.5.3",
"karma-junit-reporter": "^1.2.0",
"prompt": "^1.0.0",
"rxjs": "6.2.2",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular-devkit/architect": "~0.7.2",
"@angular-devkit/build-angular": "~0.7.2",
"@angular-devkit/core": "~0.7.2",
"@angular-devkit/schematics": "~0.7.2",
"@angular/cli": "^6.2.0-beta.2",
"@angular/compiler": "~6.1.1",
"@angular/compiler-cli": "~6.1.1",
"@angular/language-service": "~6.1.1",
"@compodoc/compodoc": "^1.1.3",
"@ionic/ng-toolkit": "^1.0.0",
"@ionic/schematics-angular": "^1.0.0",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~10.5.2",
"codelyzer": "~4.4.2",
"cypress": "^3.1.0",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.0",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"start-server-and-test": "^1.7.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~2.7.2"
}
如何解决这些测试框架的困惑?
亲切的问候,
大卫
VS 默认获取 tsconfig.json
个文件。由于您没有在其中指定 types
字段,它会从 @types
目录中获取所有类型。可能的解决方案是在嵌套文件夹中创建 tsconfig.json
而不是 tsconfig.spec.json
文件,并在其中指定 types
字段。