단일 테스트 파일 실행


138

ng test전체 테스트 스위트 대신 단일 파일 을 실행할 수있는 방법이 있습니까? 이상적으로는 파일을 편집 할 때 가장 빠른 피드백 루프를 원하지만 karma각 저장마다 전체 스위트를 실행 하려고 합니다. 이는 충분히 큰 테스트 스위트를 구축 할 때 약간 느립니다.


이것은 개별 질문 실행에 관한 질문에서 angular-cli하나의 테스트 사양 만 실행하는 방법 과 다릅니다 . 개별 파일을 실행하는 것입니다. 이 솔루션에는 동일한 Jasmine 사양 기능이 포함되지만 질문의 특성은 약간 다릅니다.



여기서 답변을 찾을 수 있습니다 : stackoverflow.com/questions/40683673/…
Sahil Shikalgar

답변을 찾으실 수 있습니다 : stackoverflow.com/questions/40683673/…
Sahil Shikalgar

답변:


262

Jasmine을 사용하면 접두사 describeit메소드를 f(초점을 위해) 사용할 수 있습니다. 그래서, fdescribe하고 fit. 이 중 하나를 사용하면 카르마는 관련 테스트 만 실행합니다. 따라서 현재 파일의 초점을 맞추기 위해 최상위 레벨 describe을 가져 와서로 변경할 수 fdescribe있습니다. 내 목적으로 작동합니다.


9
전설적인 답변
danday74

2
이러한 중요한 기능이 더 명확하고 간단하지 않다는 것을 믿을 수 없습니다.
Ash

10
작동하지만 소스 코드를 변경해야하고 소스 제어에서 수정 된 코드를 확인할 수 있기 때문에 이상적이지 않습니다.
Marco Altieri

4
가능하면 공식 문서 에 대한 링크를 추가하십시오
jgpATs2w

나는 이것을
Carlos E

26

그것은 당신이에 의해 코멘트없이 특정 테스트를 해제 할 수 있음을 언급 할만큼 가치의 xdescribexit

xdescribe('Hello world', () => { 
  xit('says hello', () => { 
    expect(helloWorld())
        .toEqual('Hello world!');
  });
});

그리고 누군가가 이미 당신은 다음 몇 가지 테스트에 초점을하려는 경우 말했다 fdescribefit

fdescribe('Hello world', () => { 
  fit('says hello', () => { 
    expect(helloWorld())
        .toEqual('Hello world!');
  });
});

25

요즘 include옵션을 통해 달성 할 수 있습니다 . https://angular.io/cli/test#options

예를 들어 glob match입니다.

ng test --include='**/someFolder/*.spec.ts'

8.1.0 릴리스 노트 에서 찾을 수 없지만 @Swoox는 아래에 cli 버전 이후의 기능이라고 언급합니다 8.1.0. 알아 내 주셔서 감사합니다.


1
이것은 최근 업데이트처럼 보입니다. 필요한 버전을 포함하고 싶을 수도 있습니다. CLI 8.1이 필요합니다.
Swoox

v9.1에서 제거 된 것으로 보입니다 :(
rmcsharry

2
방금 CLI v9.1.0에서 이것을 테스트했으며 완벽하게 작동합니다.
Sajjan Singh

9

단일 파일, 특정 디렉토리 또는 많은 파일에 대해 테스트를 실행하기 위해 사용할 수 ng test있는 추가 옵션이 있음을 발견했습니다 --include.

// one file
npm run test -- --include src/app/components/component/component-name.component.spec.ts

// directory or bunch of files
npm run test -- --include src/app/components

클리닉 문서


앵귤러 9-제거 된 것 같습니다
rmcsharry

아니요, NG 9에서도 계속 사용할 수 있습니다.
tephyr

6

src/test.ts다음 줄로 이동하여 변경할 수 있습니다.

const context = require.context('./', true, /\.spec\.ts$/);

const context = require.context('./', true, /**yourcomponent.component**\.spec\.ts$/);

여기에 이미지 설명을 입력하십시오


1
엄밀히 말하면,이 작업을 수행하는 방법에 대한 대부분의 질문에 적합하고 fdescribe를 사용하여 문제를 해결하더라도 가장 정확한 답변처럼 들립니다. Karma에는 github.com/karma-runner/karma/issues/1507 보다 쉽게 ​​수행 할 수있는 자식 문제가 있습니다 . 이상적인 것은 아니지만 Karma를 구성하여 하나의 테스트를 변경 한 다음 브라우저에서 해당 테스트를 클릭하여 업데이트로 다시 실행할 수 있습니다.
pumpkinthehead



0

src/test.ts다음 줄 번호 코드 18을 변경 해야합니다 .

//Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);

//Then we find all the tests.
const context = require.context('./', true, /testing.component\.spec\.ts$/);

여기에 이미지 설명을 입력하십시오


-3

사양 파일을 매개 변수로 지정하면 작동합니다.

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

테스트 foo.spec.ts

도움이 되었기를 바랍니다.


4
사용중인 버전을 지정할 수 있습니까? 1.7.x와 작동하지 않음
FrEaKmAn

4
그것은 나에게도 작동하지 않았습니다. 그러나 spec 파일의 경로 앞에 --main 옵션을 사용하도록 수정했습니다. 슬래시가있는 절대 경로를 사용했습니다. 상대 경로를 시도하지 않았습니다. Angular 6 사용. 그것이 최선의 해결책인지 확실하지 않지만 나에게 도움이되는 것 같습니다.
user2367418
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.