Node.js와 함께 사용할 수있는 최고의 테스트 프레임 워크는 무엇입니까? [닫은]


130

https://github.com/ry/node/wiki/modules#testing 에서 다소 긴 테스트 프레임 워크 목록을 살펴 보았습니다 . 이 프레임 워크에 대한 경험은 무엇입니까?

분명히 브라우저에서 실행하는 기능은 큰 보너스이지만, 주로 Node.js에 관심이 있습니다. 비동기식 경사가 큰 것이 좋습니다.

답변:


70

최신 정보:

제 생각에는 모카 가 최고입니다.


이 프레임 워크에 대한 경험은 무엇입니까?

테스트 커버리지가있는 매우 멋진 테스트 프레임 워크 인 expresso 와 함께 연주했습니다 . Express.js (Node.js 및 Connect에 구축 된 초고속 서버 측 JavaScript 웹 개발 프레임 워크) 의 작성자 인 TJ Holowaychuk에 의해 작성되었습니다 . 나는 최근에 should.js 라는 멋진 라이브러리를 가지고 있다는 것을 알았 습니다.

분명히, 브라우저에서 실행하는 능력은 큰 보너스가 될 것입니다

브라우저에서 실행할 수 있다고 생각하지 않지만 브라우저에서 왜 실행하고 싶은지 모르겠습니다.

하지만 주로 Node.js에 관심이 있습니다. 비동기식 경사가 큰 것이 좋습니다.

익스프레스에서 인용 :

각 콜백에 전달 된 인수는 beforeExit이며 일반적으로 콜백이 호출되었다는 것을 확인하는 데 사용됩니다.

beforeExit를 사용하여 비동기 함수를 테스트 할 수 있습니다.


팁 : GitHub 에서 TJ Holowaychuk 을 따르십시오 . 그는 매우 훌륭한 오픈 소스 코드를 생성하기 때문입니다.


답장을 보내 주셔서 감사합니다. 익스프레스를 시도했지만 비동기 지원이 그리 직관적이지 않다는 것을 알았습니다. (어쨌든 나를 위해)
doffm

3
나는 현재 이해하기 쉬운 서약 ( vowsjs.org )을 시도 하고 있습니다.
doffm

vowjs는 훌륭한 테스트 프레임 워크처럼 보였습니다. Expresso의 테스트 범위 기능이 마음에 듭니다. 게다가 나는 당신이 이해하지 못한 것이 궁금하십니까?
Alfred

4
지금 모카를 선호한다고하는데 왜?
Jonathan Arkell

먹어봐. 모카에는 모든 것이 있습니다 :). 브라우저 지원, 코드 범위. 당신은 그것을 이름, 모카가 가지고 있습니다!
Alfred

40

비동기 BDD 프레임 워크 (Behaviour Driven Development)를 사용하고 작업을 완료 하는 VowsJS 를 사용합니다.

요즘 내가 본 것에서 많은 사람들이 NPM 모듈을 테스트하기로 결정했기 때문에 지금까지 사용하기에 가장 적합하다고 생각합니다.

NodeJS와 함께 사용할 수있는 인기있는 테스트 프레임 워크는 다음과 같습니다.

또한 자바 스크립트 테스트 프레임 워크의 목록을 볼 수 있습니다 여기에

더 나은 코드를 작성하는 데 도움이되는 라이브러리는 더 적습니다.

또한이 대나무 CI 서버 에서 골드 피처 가 빌드 및 테스트 자동화가. Apache / Tomcat (자바를 사용하고 매우 무겁게 만드는 sux) 용 패키지 도 무료는 아니지만 10 달러스타터 라이센스가 있으므로 저렴하다고 생각합니다. 지금까지 찾은 모든 CI 서버 중 가장 많이 사용되는 기능이며 xUnit 을 지원하는 모든 단위 테스트를 지원 하므로 Bamboo를 사용하여 모든 언어에 대해 빌드 / 테스트를 실행할 수 있습니다.

NodeJS를 사용하는 CI의 또 다른 옵션 은 오픈 소스 커뮤니티를위한 호스팅 된 지속적인 통합 서비스 라고하는 많은 사람들이 오픈 소스 프로젝트에 사용하는 Travis 입니다 .

Node JS 프로젝트를위한 Continuous Integration 주제에 대한 Google 그룹 토론도 있습니다 .


6
Vows를 사용하려는 사람들을위한 참고 사항 : 2012 년 이후 업데이트되지 않았습니다
Code Commander

그들은 이후에 약간의 변경을했습니다 . 마지막 릴리스 : 2015 년 9 월
Andre Figueiredo

2020 년 Vows oficial 사이트에 잘못된 게이트웨이가 생겼을 수도 있습니다.
링컨

와우, 친구, 그 이후로 많은 시간이 지났지 만 지금 VowJS에 대해 찾을 수있는 것은 이것입니다 : istavros.github.io/vowjs 그러나 불행히도, 2020 년에 사용할 것을 제안 할 수는 없습니다. 대신 Mocha ( mochajs.org ), Jasmin ( jasmine.github.io ) 및 Jest ( jestjs.io )를 확인하십시오.
panosru

14

위의 asker의 의견을 바탕으로 서약을 시도했으며 비동기 테스트와 관련된 많은 문제를 해결했습니다. 직렬 및 병렬 테스트를 혼합하는 기능은 훌륭합니다.

안내 문서를주의 깊게 읽으십시오. 그러나 일단 숙달되면 유연하고 강력하며 훌륭하고 깨끗한 결과를 얻을 수 있습니다.

업데이트 : 나는 또한 체크 아웃하는 사람들을 격려 할 해야 그들의 주장에 대해. 매우 유연하고 읽기 쉬운 어설 션을 허용하며 Expresso 및 Vows 및 대부분의 다른 테스트 프레임 워크와도 호환됩니다.

(알프레드의 답변에 대한 의견을 사람들이 알지 못하는 경우를 대비하여 별도의 답변으로 게시하고 있습니다.)

2015 년 1 월 7 일 업데이트 : 가치있는 것을 위해 Vows에서 Mocha로, 그리고 Should에서 Chai로 전환했습니다. Mocha는 이제 promise를 사용하여 비동기 테스트를 훨씬 더 잘 지원하며 Chai는 expect객체 프로토 타입을 수정하고 싶지 않은 사람들을 위해 API를 포함하여 몇 가지 유연한 어설 션 옵션을 허용합니다 .


1
should프로토 타입에 이름 should을 지정할 수 있는 열거 할 수없는 속성 을 선택합니다 Object. 즉, 처리하는 모든 값 / 객체가 테스트 시간과 프로덕션 시간에 약간 다르게 보입니다 . 대부분의 경우 이것이 '작동하는 것'이지만 원칙적으로 내장 프로토 타입을 수정하는 것은 좋지 않습니다. 테스트하는 동안에 만 그렇게하는 것이 잘못 느껴집니다. 그것들은 모두 단독으로 수행되어 멋진 구문을 가질 수 있습니다.
흐름

v2 이후 @flow는 should확장하지 않고 사용하기 쉽다 Object.prototype(간단한 require('should').noConflict()대안으로 should.js를 호출 하고 사용함)
den bardadym

6

JavaScript 테스트에 Jasmine 을 사용하기 시작했습니다. 특히 작고 브라우저와 노드 모두에서 실행되기 때문입니다. 또한 강력한보고 및 매처 API를 제공하므로 향후 다른 도구와 쉽게 통합 할 수 있습니다. 브라우저에서 TDD에 qunit을 사용할 때 추가하는 첫 번째 항목 중 하나이기 때문에 buildin mocking 프레임 워크를 사용하는 것도 유용합니다.


2

진정한 BDD 프레임 워크를 원한다면 Yadda를 고려 하십시오 . 기능 파일을 지원하기 위해 mocha, jasmine, nodeunit, qunit, zombie 및 casperjs와 통합됩니다.

   Scenario: provides the version of all services
      given service x is running
      and service y is running
      when I request the service versions
      then service x should be version 0.0.1
      and service y should be version 0.0.2

2

나는 노드 유닛을 사용 해 왔으며 비동기 기능으로 작업하는 능력은 상당히 간단합니다.

그의 블로그 에서 nodeunit 을 사용할 준비가 된 좋은 연습이 있습니다 .

[ 참고 : API가 블로그 게시물 이후 변경된 - setUp(callback)그리고 tearDown(callback)당신은 당신의 설치 / 해체가 완료되면 호출 할 필요가 인수, 같은 콜백을 모두. ]


이것을 살펴보고 expresso에서 mongoose.js 함수의 몇 가지 테스트를 시도한 후 모든 테스트를 병렬로 실행하지 않고 setUp 및 tearDown 테스트를 허용하는 nodeunit의 환경 설정이 유용합니다.
asparagino
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.