Karma로 nodejs 백엔드 코드를 테스트하는 방법 (Testacular)


87

내 백엔드 단위 테스트 (Mocha로 작성)를 실행하도록 Karma를 설정하려면 어떻게해야합니까? 백엔드 테스트 스크립트를에 추가 files = []하면 require정의되지 않았다는 메시지가 표시 됩니다.


CAN 내 프로젝트에서 수행 할 수, 테이크 모양 : github.com/noamtcohen/Narma
noamtcohen

답변:


83

당신은하지 않습니다. Karma는 브라우저 기반 코드 테스트 전용입니다. 백엔드에 mocha 테스트가 있고 프런트 엔드에 karma / mocha가있는 프로젝트가있는 경우 스크립트에서 package.json을 편집하여 테스트를 다음과 같이 설정하십시오.mocha -R spec && karma run karma.con

그런 다음 npm testtrue를 반환하면 커밋하거나 배포하는 것이 안전하다는 것을 알 수 있습니다.


감사! 프로젝트에서 이미 설정할 계획이었던 Grunt를 사용하여 솔루션을 찾았습니다. 내 대답을 참조하십시오.
Sylvain

기본적으로 JS의 모든 테스트 러너는 브라우저에 의존합니까? 그것은 쓸모가 없습니다.

4
Mocha와 Jasmine은 브라우저에 의존하지 않으며 헤드리스 브라우저에서 실행하려면 phantomjs 사용을 고려하십시오.
Dan Kohn

2
테스트를 위해 브라우저에 의존하는 것은 나쁜 일이 아닙니다. 다양한 종류의 테스트가 있으며 필요에 따라 종단 간 테스트가 유효합니다. 시각적 회귀 테스트 (페이스 북의 헉슬리 참조)조차도 어떤 경우에는 중요합니다.
Ciro Costa

15

할 수없는 것 같습니다 (@dankohn에게 감사드립니다). Grunt를 사용하는 내 솔루션은 다음과 같습니다.

  • Karma : karma.conf.js 파일 업데이트

    • 세트 autoWatch = false;
    • 세트 singleRun = true;
    • 설정 browsers = ['PhantomJS'];(인라인 결과 포함)
  • 꿀꿀 거리는 소리:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • 두 개의 grunt 작업을 구성합니다 (아래 grunt 파일 참조).

Gruntfile.js :

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-simple-mocha');
  grunt.loadNpmTasks('grunt-karma');

  grunt.initConfig({
    simplemocha: {
      backend: {
        src: 'test/server-tests.js'
      }
    },
    karma: {
      unit: {
        configFile: 'karma.conf.js'
      }
    }
  });

  // Default task.
  grunt.registerTask('default', ['simplemocha', 'karma']);
};
  • Grunt (선택 사항) : 테스트 할 사양 파일 또는 파일을 변경 한 후 실행되도록 grunt-watch를 구성합니다.

  • grunt명령을 사용하여 모두 실행하십시오 .


3
따라서 여전히 브라우저가 필요합니다. 브라우저가 헤드리스라는 것입니다. 서버 측 테스트에 카르마를 사용하지 않는 것은 얼마나 쓸모가 없습니다.

5
안녕하세요, 이것은 백엔드에 카르마를 사용하지 않고 모카를 사용하고 있으므로 브라우저가 없습니다. 이것은 파일을 저장하자마자 모든 테스트를 실행하는 편리한 방법입니다.
Sylvain

내가하고있는 일에 Karma가 정말로 필요하지는 않았지만, 이로 인해 자동으로 모카 테스트를 실행하기 위해 지저분한 설정을 쉽게 얻을 수 있었으므로 감사합니다.
Michael Oryl

흥미로운 접근 방식. 그러나 Sails 전역이 테스트 내에서 제대로 인식되는지 어떻게 확인할 수 있습니까?
dmvianna
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.