VS-Code неправильные типы для модульных тестов (Mocha & Chai вместо Jasmine)

У меня есть ионный проект, который я хочу протестировать на e2e с помощью Cypress и unit-test с помощью Jasmine. После того, как я добавил пакет cypress в package.json и начал писать первые e2e-тесты, VS-Code показал мне некоторые ошибки в файлах spec.ts для моих модульных тестов. Проблема в том, что VS-Code предполагает, что я использую Mocha и Chai для своих тестов.

VS-Code неправильные типы для модульных тестов (Mocha & Chai вместо Jasmine)

Я могу запустить тесты без ошибок.

Вот мой файл 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». Возможное решение - создать tsconfig.json во вложенной папке вместо файла tsconfig.spec.json и указать в нем поле «типы».

Krzysztof Grzybek 22.08.2018 14:25

Да!! Это решение. Я думал, что VS-Code распознает tsconfig.spec.json, но проигнорировал его. После переименования VS-Code использует правильные типы в файлах спецификации. Благодарю за помощь. Если вы дадите ответ, я отмечу его как решенный.

David 23.08.2018 09:29

во что переименовали tsconfig.spec.json?

Roger Garza 18.12.2020 16:30

Я переименовал его в tsconfig.json Он находится в отдельной папке со всеми кипарисовыми тестами

David 22.12.2020 19:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
4
846
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

VS по умолчанию принимает файл tsconfig.json. Поскольку вы не указали в нем поле types, он берет все типы из каталога @types. Возможное решение - создать tsconfig.json во вложенной папке вместо файла tsconfig.spec.json и указать в нем поле types.

Другие вопросы по теме