[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 아래의 패키지 만 포함됩니다.