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.