programing

각도 2 단위 테스트: 'descript' 이름을 찾을 수 없습니다.

elseif 2023. 3. 15. 19:24

각도 2 단위 테스트: 'descript' 이름을 찾을 수 없습니다.

각도에서 이 튜토리얼을 따라하고 있어요.이오

그들이 말한 대로 유닛 테스트를 작성하기 위해 hero.spec.ts 파일을 작성했습니다.

import { Hero } from './hero';
describe('Hero', () => {
  it('has name', () => {
    let hero: Hero = {id: 1, name: 'Super Cat'};
    expect(hero.name).toEqual('Super Cat');
  });
  it('has id', () => {
    let hero: Hero = {id: 1, name: 'Super Cat'};
    expect(hero.id).toEqual(1);
  });
});

유닛 테스트는 매우 효과적입니다.문제는 튜토리얼에 기재되어 있는 몇 가지 에러가 표시된다는 것입니다.

을 해야 할지할 수 .it ★★★★★★★★★★★★★★★★★」expect은 무해하므로 무시해도 .그 성가신 불만들은 해가 없기 때문에 일단 무시해도 좋습니다.

그리고 그들은 정말로 그것을 무시했다.이러한 오류는 무해하지만 여러 개의 오류를 수신하면 출력 콘솔에 표시되지 않습니다.

예를 들어 다음과 같습니다.

'descript' 이름을 찾을 수 없습니다.

'it' 이름을 찾을 수 없습니다.

'expect' 이름을 찾을 수 없습니다.

어떻게 하면 고칠 수 있을까요?

인스톨이 완료되었기를 바랍니다.

npm install --save-dev @types/jasmine

에 '가져오다'의 맨 에 '가져오다'의 맨 위에 '가자'의 맨 위에 ''를 붙입니다.hero.spec.ts - files-

import 'jasmine';

그러면 문제가 해결될 거예요.

Typescript@2.0 이후에서는, 다음의 타입을 인스톨 할 수 있습니다.

npm install -D @types/jasmine

다음 '가져오다'를 으로 '가져오다'를 사용해서 '를 만들어 .types입니다.tsconfig.json:

"types": ["jasmine"],

에는 ""가 .import {} from 'jasmine';각 스펙 파일에 격납되어 있습니다.

npm install @types/jasmine

되었듯이, 「 」는, 「 」, 「 」, 「 」, 「 」, 「 」는,"types": ["jasmine"] 없게 되었습니다. "" " " " " " "@types패키지는 자동으로 컴파일에 포함됩니다(v2.1 이후).

가장 쉬운 해결책은 다음과 같은 tsconfig.json의 테스트 파일을 제외하는 것이라고 생각합니다.

"exclude": [
    "node_modules",
    "**/*.spec.ts"
]

난 이거면 돼.

자세한 내용은 공식 tsconfig 문서를 참조하십시오.

재스민 타이핑 설치하셔야 합니다.비교적 최신 버전의 typescript 2를 사용하고 있다고 가정하면 다음 작업을 수행할 수 있습니다.

npm install --save-dev @types/jasmine

Typescript@2.0 이후에서는 npm install을 사용하여 유형을 설치할 수 있습니다.

npm install --save-dev @types/jasmine

그런 다음 tsconfig.json의 typeRoots 옵션을 사용하여 유형을 자동으로 Import합니다.

"typeRoots": [
      "node_modules/@types"
    ],

이 솔루션에서는 각 사양 파일에 있는 'jasmin'에서 {}을(를) 가져올 필요가 없습니다.

컴파일 되는 모든 하려면 TypeScript를 합니다.types.compilerOptionstsconfig.json

는 어떤 것이 때 합니다.types의 「」compilerOptions에 "" " " " " " 입니다.jest엔트리가 없습니다.

이 , 이 문제를 해결하기 위해서, 이 문제를 해결하기 위해서,compilerOptions[ ] tscongfig.json둘 중 하나를 포함해야 한다.jesttypes 또는 area 。types전하::::::

{
  "compilerOptions": {
    "esModuleInterop": true,
    "target": "es6",
    "module": "commonjs",
    "outDir": "dist",
    "types": ["reflect-metadata", "jest"],  //<--  add jest or remove completely
    "moduleResolution": "node",
    "sourceMap": true
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}

이 문제의 해결책은 @Pace가 답변에 쓴 내용과 관련되어 있습니다.하지만 모든 것이 설명되는 것은 아니기 때문에, 괜찮으시다면 제가 직접 쓰겠습니다.

해결책:

다음 행 추가:

///<reference path="./../../../typings/globals/jasmine/index.d.ts"/>

hero.spec.ts은 to to로 통한다typings폴더(모든 입력이 저장됨)를 선택합니다.

을 인스톨 , 「인스톨 해 주세요」를 작성할 .typings.json프로젝트 루트에 다음 내용으로 파일을 작성합니다.

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160807145350"
  }
}

★★★★★★★★★★★★★★★★★★★★.typings install서 (어디서)typingsNPM ★★★★★★★★★★★★★★★★★★★★★」

, 결, 결, 결, 결, the, the, the, the, the, the, the, in, in, in, the, in, in, in, in, in, in, the, the, the,typeRoots 집에서는tsconfig.json.

TypeScript 문서에서 볼 수 있듯이

typeRoots를 지정하면 typeRoots 아래의 패키지만 포함됩니다.

오늘 이 은 아무것도 않는 입니다... no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no★★★★★★★★★★★★★★★★★★.typeRoots ★★★★★★★★★★★★★★★★ 없음types ★★★★★★★★★★★★★★★★ 없음exclude ★★★★★★★★★★★★★★★★ 없음include모든 디폴트는 정상적으로 동작하고 있는 것 같습니다.사실 다 없애기 전까지는 제대로 작동하지 않았어요. I had:나는 다음을 가지고 있었다.

"exclude": [
    "node_modules"
]

디폴트이기 때문에 삭제했습니다.

나는 다음을 가지고 있었다.

"types": [
    "node"
]

컴파일러 경고를 통과합니다.하지만 지금은 그것도 없앴어요.

- 아니, 아니에요! - 왜요? 습 the warning같다: is'다t?error TS2304: Cannot find name 'AsyncIterable'.부에서node_modules\@types\graphql\subscription\subscribe.d.ts

이것은 매우 불쾌하기 때문에 tsconfig에 로딩하기 위해 이 작업을 수행했습니다.

"compilerOptions": {
    "target": "esnext",
}

다음 세트니까직접 사용하는 것은 아니기 때문에 호환성에 대해서는 아직 걱정할 필요가 없습니다.나중에 화상 안 입었으면 좋겠어요.

"typescript"에 나에게 맞는 답변을 추가합니다: "3.2.4" node_modules/@types의 ts3.1에 대한 폴더가 재스민 유형 아래에 있다는 것을 깨달았습니다.그 순서는 다음과 같습니다.-

  • Install type jasmine 설치 타입 재스민npm install -D @types/jasmine
  • tsconfig.json jasmine/ts3.1에 추가

    "typeRoots": [ ... "./node_modules/jasmine/ts3.1" ],

  • 유형에 Jasmine 추가

    "types": [ "jasmine", "node" ],

주의: 이것은 필요 없습니다.import 'jasmine';더이상.더이상.

여러 node_modules가 존재하는 Lerna Mono-repo에서 @types를 선택하기 위해 다음 작업만 수행하면 됩니다.

npm install -D @types/jasmine

다음으로 각 tsconfig에 입력합니다.각 모듈 또는 앱 파일

"typeRoots": [
  "node_modules/@types",
  "../../node_modules/@types" <-- I added this line
],

저 같은 경우에는 테스트를 할 때가 아니라 앱을 사용할 때 이 오류가 발생했습니다.tsconfig.app.json 파일에 다른 설정이 있는 것을 깨닫지 못했습니다.

전에도 이런 일이 있었어요.

{
  ...
  "include": [
    "src/**/*.ts"
  ]
}

It was including all my 그것은 나의 모든 것을 포함하고 있었다..spec.ts파일을 저장할 수 있습니다.는 변했 the the the the를 .include property toexclude' 모든 했습니다.

{
  ...
  "exclude": [
    "**/*.spec.ts",
    "**/__mocks__"
  ]
}

이제 예상대로 작동합니다.

앵글 라이브러리에서 이 오류가 발생했습니다.실수로 .spec 파일을 public-api.ts의 내보내기에 포함시켰습니다.내보내기 삭제로 문제가 해결되었습니다.

Import를 보면 사이클 의존성이 있을 수 있습니다.이것은 에러입니다.import {} from 'jasmine';콘솔의 오류를 수정하고 코드를 컴파일러블로 만들지만 악마의 근원을 제거하지는 않습니다(내 경우 사이클 의존성).

난 Angular 6, Typescript 2.7에 있고, 유닛 테스트에 제스트 프레임워크를 사용하고 있어.나는 가지고 있었다@types/jest설치 및 추가typeRoots안에서.tsconfig.json

그러나 아래 디스플레이 오류는 아직 남아 있습니다(즉, 터미널에는 오류가 없습니다).

이름 설명을 찾을 수 없습니다.

Import 추가:

import {} from 'jest'; // in my case or jasmine if you're using jasmine

엄밀히 말하면 아무것도 하지 않기 때문에, 이 문제의 원인이 되는 Import가 있다고 생각했습니다만, 파일을 삭제하면

tsconfig.spec.json

에서src/폴더, 문제를 해결해주었습니다.@types는 이전에 rootTypes 내에 Import되어 있습니다.

같은 방법으로 이 파일을 삭제할 것을 권장합니다.필요한 설정은 내부에 없습니다.(ps: 나와 같은 경우)

가 「」에 ..specs 파일app/app.component.spec.ts(7,3): error TS2304: Cannot find name 'beforeEach'.

맨 해, 「」를 참조해 주세요.npm install rxjs

import { range } from 'rxjs';
import { map, filter } from 'rxjs/operators';

tsconfig.json 에 추가하는 것만으로, 제외에 「**/*.spec.ts」가 없는 것을 확인합니다.

  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]

작업 중인 tsconfig.json

언급URL : https://stackoverflow.com/questions/39020022/angular-2-unit-tests-cannot-find-name-describe