[unit-testing] 각도 2 단위 테스트 : ‘describe’이름을 찾을 수 없습니다

나는 다음과 같은거야 angular.io에서이 자습서를

그들이 말했듯이 단위 테스트를 만들기 위해 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그들이 재스민을 설명하는 입력 파일이 부족하기 때문이다. 우리는 그 성가신 불만이 무해하기 때문에 지금은 무시할 수 있습니다.

그리고 그들은 실제로 그것을 무시했습니다. 이러한 오류는 무해하지만 출력 오류가 발생하면 출력 콘솔에서 좋지 않습니다.

내가 얻는 것의 예 :

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

‘it’이름을 찾을 수 없습니다.

‘expect’이름을 찾을 수 없습니다.

이 문제를 해결하려면 어떻게해야합니까?



답변

당신이 설치되기를 바랍니다-

npm install --save-dev @types/jasmine

그런 다음 hero.spec.ts파일 맨 위에 다음 가져 오기를 넣으십시오.

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 docs 에 대한 추가 정보 .


답변

jasmine에 타이핑을 설치해야합니다. 비교적 최신 버전의 typescript 2에 있다고 가정하면 다음을 수행 할 수 있습니다.

npm install --save-dev @types/jasmine


답변

Typescript@2.0 이상을 사용하면 npm install로 유형을 설치할 수 있습니다

npm install --save-dev @types/jasmine

그런 다음 tsconfig.json 의 typeRoots 옵션을 사용하여 유형을 자동으로 가져 오십시오 .

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

이 솔루션에는 ‘jasmine’에서 가져 오기 {}가 필요하지 않습니다. 각 사양 파일에서.


답변

이 문제 에 대한 해결책 은 @Pace가 그의 답변에 것과 관련이 있습니다. 그러나 모든 것을 설명하지는 않으므로 마음에 들지 않으면 직접 작성하겠습니다.

해결책:

이 줄을 추가 :

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

hero.spec.ts파일 의 시작 부분에 문제가 해결되었습니다. 경로는 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"
  }
}

그리고 NPM 패키지가 typings install있는 곳을 실행하십시오 typings.


답변

내 경우, 해결책은을 제거하는 것이었다 typeRoots내에서 tsconfig.json.

TypeScript 문서 에서 읽을 수 있듯이

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