Karma : 명령 줄에서 단일 테스트 파일 실행


93

그래서 저는이 모든 것을 찾고 있었는데 여기서 "유사한"답변을 찾았지만 정확히 제가 원하는 것은 아닙니다.

지금 내가 카르마와 하나의 파일을 테스트하려는 경우, 내가해야 할 fit(), fdescribe()문제의 파일에 ...

그러나 내가 원하는 것은 구성 파일을 사용하여 karma를 호출하고 특정 파일로 지정할 수 있기 때문에 파일을 전혀 수정할 필요가 없습니다.

karma run --conf karma.conf.js --file /path/to/specific/test_file.js

이것이 가능합니까? 아니면 어떤 도우미와 함께? (grunt 또는 gulp 사용?)


1
시도 karma run -- --grep=testDescriptionFilter했습니까? 나는 이것이 전에 제안 된 것을 보았지만 그것이 작동하는지 직접 확인할 수는 없습니다. (내가 집에 있다면 제안하기 전에 시도 할 것입니다. 시도 할 수 없기 때문에
bvaughn

1
그것은 단지 특정하지 it않습니까? 파일에 사용할 가능성이 없습니까?
Gonçalo Vieira

3
솔직히 말해서 단일 테스트 파일에 집중하고 싶다면 항상 karma.conf를 수정했습니다. 더 빠른 방법을 찾기 위해 노력한 적이 없기 때문에 쉽게 할 수 있습니다.
bvaughn

1
핫도그. 도움이되어 다행입니다. 게시 됨. :)
bvaughn

답변:


59

먼저 카르마 서버를 시작해야합니다.

karma start

그런 다음 grep을 사용하여 특정 테스트 또는 설명 블록을 필터링 할 수 있습니다.

karma run -- --grep=testDescriptionFilter

12
이 대답은 당신이해야한다고 말을해야 karma실행 karma start실행하기 전에karma run
etagwerker

4
.NET으로 필터링하는 방법에 대한 질문을 감안할 때 실제로 필요하다고 생각하지 않습니다 karma run. 포스터가 Karma를 시작하고 모든 테스트를 실행하는 방법을 알고 있으며 필터링과 관련된 구문을 찾고 있다는 것이 분명해 보였습니다.
bvaughn

2
프로그래밍 방식으로이 작업을 수행하려면 어떻게해야합니까? 즉, 변경된 파일에 대한 설명은 알 수 없지만 파일 이름은 알 수 있습니다.
MPV

3
이 솔루션은 Jasmine 테스트 (karma-jasmine)에서는 전혀 작동하지 않는 것으로 보입니다. 카르마 실행 --help는 --grep을 명령 옵션으로 전혀 표시하지 않습니다. 최신 Karma (1.5.0)를 사용하고 있습니다.
Yavin5

10
이것은 단일 테스트를 실행하지 않습니다!
eav

16

비록 --files더 이상 지원되지 않습니다, 당신은 파일의 목록을 제공하기 위해 ENV 변수를 사용할 수 있습니다 :

// karma.conf.js
function getSpecs(specList) {
  if (specList) {
    return specList.split(',')
  } else {
    return ['**/*_spec.js'] // whatever your default glob is
  }
}

module.exports = function(config) {
  config.set({
    //...
    files: ['app.js'].concat(getSpecs(process.env.KARMA_SPECS))
  });
});

그런 다음 CLI에서 :

$ env KARMA_SPECS="spec1.js,spec2.js" karma start karma.conf.js --single-run

1
이것은 훌륭하게 작동합니다! 기본 glob의 전면에 디렉토리 이름이 있는지 확인하십시오. 그렇지 않으면 패턴 오류가 발생합니다. 또한 내 파일을 변경했습니다. 다음과 같은 정의 : files : [] .concat (getSpecs (process.env.KARMA_SPECS)), 그리고 환경 변수가 없으면 함수가 이미 glob 패턴에 넣었 기 때문에 더 잘 작동합니다. 세트. 오, 그리고 명령 앞에 "env"가 필요하지 않다고 생각합니다 (그것 없이는 작동합니다). 이 솔루션 @Yuriy Kharchenko에 감사드립니다!
Yavin5 2017 년

6

이 옵션은 최신 버전의 카르마에서 더 이상 지원되지 않습니다.

참조 https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054를

파일 배열은 다음과 같이 CLI를 사용하여 재정의 할 수 있습니다.

karma start --files=Array("test/Spec/services/myServiceSpec.js")

또는 이스케이프 :

karma start --files=Array\(\"test/Spec/services/myServiceSpec.js\"\)

참고 문헌


2
이 오류가 발생합니다
-bash

5
그래서 이것을 시도하면 다음과 같은 오류가 발생합니다. config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve)), 이는 requireJS를 사용하고 있다는 사실 때문일 수 있습니다.
Gonçalo Vieira

1
erm, requireJS 때문이 아닙니다. 어떤 이상한 이유로 karma가 Array ( "zzz")를 JS Array로 읽지 않습니까? O_o
Gonçalo Vieira

2
nm, karma가 더 이상 --files arg?
Gonçalo Vieira 2015

23
여기 오는 모든 사람에 대한 경고이
dignifiedquire
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.