"Node.js"의 두 판 사이의 차이
잔글 |
잔글 (→Core Module) |
||
(같은 사용자의 중간 판 33개는 보이지 않습니다) | |||
24번째 줄: | 24번째 줄: | ||
[http://nodejs.org/download/ 다운로드 사이트]에서 node-v0.12.0-x64.msi 파일을 다운로드 하여 설치 합니다. | [http://nodejs.org/download/ 다운로드 사이트]에서 node-v0.12.0-x64.msi 파일을 다운로드 하여 설치 합니다. | ||
+ | |||
+ | == Node.js 문법 == | ||
+ | |||
+ | === Node.js 기초 === | ||
+ | |||
+ | === 내장 상수 === | ||
+ | |||
+ | === 내장 함수와 특수 함수 === | ||
+ | |||
+ | === 상수/변수 선언 === | ||
+ | |||
+ | === 객체 선언 === | ||
+ | |||
+ | === Module 선언 === | ||
+ | |||
+ | Node.js는 [http://www.commonjs.org/ CommonJS] 형태의 모듈을 사용 한다. | ||
+ | |||
+ | 별도의 파일에 생성할 모듈을 위한 코드를 작성 한다. 작성한 코드를 modules.exports(={}) 객체에 할당하면 다른 프로그램에서 호출하여 사용할 수 있다. | ||
+ | |||
+ | 모듈을 불러쓰는 프로그램 | ||
+ | "use strict"; | ||
+ | |||
+ | var myModule=require("myModule.js"); | ||
+ | var yourModule=require("yourFolder"); #--- Folder가 지정될 경우 index.js 파일이 호출된다. | ||
+ | |||
+ | 모듈을 작성한 프로그램 (myModule.js) | ||
+ | #--- module.exports와 exports는 같은 것이다. | ||
+ | module.exports = { | ||
+ | #--- 여기에 코드를 기술 한다. | ||
+ | } | ||
+ | exports.~ = { ~ } #--- 개발 코드를 등록 한다. | ||
+ | |||
+ | === 연산자 === | ||
+ | |||
+ | === 조건문/반복문 === | ||
+ | |||
+ | === 오류 처리 === | ||
+ | |||
+ | try { | ||
+ | |||
+ | } catch(error) { | ||
+ | } | ||
+ | |||
+ | === 기타 문법 === | ||
+ | |||
+ | === Type 변환 === | ||
+ | |||
+ | == 입출력 == | ||
+ | |||
+ | === 전역 변수 === | ||
+ | |||
+ | * 전역 객체 : global | ||
+ | :* process.env : 애플리케이션 실행 환경 | ||
+ | :* process.version : node.js 버전 | ||
+ | :* process.arch : CPU 정보 | ||
+ | :* process.platform : Platform 정보 | ||
+ | :* process.argv : 실행 명령 파라미터 | ||
+ | :* Event 전역 객체 | ||
+ | ::* process.exit : 애플리케이션 종료 이벤트 | ||
+ | ::* process.beforeExit : 애플리케이션이 종료 되기 전에 발생하는 이벤트 | ||
+ | ::* process.uncaughtException : 예외 처리되지 않은 이벤트 | ||
+ | :* 전역 함수 | ||
+ | ::* process.exit : 애플리케이션 종료 | ||
+ | ::* process.nextTick : 이벤트 루프내 동작을 모두 실행한 후 콜백 실행 | ||
+ | ::* setTimeout : 동작 지연 | ||
+ | ::* setEnterval : 동작 반복 | ||
+ | ::* clearTimeout | ||
+ | :* console.log(~), console.info(~), console.warn(~), console.error(~) | ||
+ | :* console.time(TIMER_NAME), console.timeEnd(TIMER_NAME) | ||
+ | |||
+ | global.console.log(~) | ||
+ | console.log(~) //--- global은 생략 가능 | ||
+ | |||
+ | === 브라우저 입출력 === | ||
+ | |||
+ | === Cookie 입출력 === | ||
+ | |||
+ | === 세션 입출력 === | ||
+ | |||
+ | === 데이터베이스 입출력 === | ||
+ | |||
+ | === 파일 입출력 === | ||
+ | |||
+ | //--- __dirname : 현재 폴더 | ||
+ | //--- __filename : 현재 파일명 | ||
+ | var pathUtil = require('path'); | ||
+ | var path = __dirname + pathUtil.sep + 'logo.png'; | ||
+ | pathUtil.join(~, ~); | ||
+ | |||
+ | path = pathUtil.normalize(path); | ||
+ | // path.basename(); | ||
+ | // path.dirname(); | ||
+ | // path.extname(); | ||
+ | var info = path.parse(~); | ||
+ | |||
+ | var fs = require('fs'); | ||
+ | fs.access(~, mode, callback) //--- fs.F_OK, fs.R_OK, fs.W_OK, fs.X_OK | ||
+ | fs.accessSync(~, mode) | ||
+ | |||
+ | fs.stat(~, callback); | ||
+ | fs.statSync(~); | ||
+ | |||
+ | var fd = fs.openSync(~, 'rwa); | ||
+ | fs.closeSync(fd); | ||
+ | |||
+ | fs.open(~, 'rwa', function(error, fd) { ~ }); | ||
+ | fs.close(fs, callback); | ||
+ | |||
+ | fs.unlink(~); | ||
+ | fs.rename(~, ~, callback); | ||
+ | fs.renameSync(~, ~) | ||
+ | |||
+ | fs.readdir(~, callback) | ||
+ | fs.readdirSync(~) | ||
+ | fs.mkdir(~, callback) | ||
+ | fs.rmdir(~, callback) | ||
+ | fs.mkdirSync(~) | ||
+ | fs.rmdirSync(~) | ||
+ | |||
+ | 동기식 | ||
+ | var fs = require('fs'); | ||
+ | var content = fs.readFileSync("readme.txt", "utf8"); | ||
+ | |||
+ | console.log(content); | ||
+ | |||
+ | fs.writeFileSync(~, ~) | ||
+ | |||
+ | 비동기식 | ||
+ | var fs = require('fs'); | ||
+ | fs.readFile("readme.txt", "utf9", function(error, content) { | ||
+ | if (error) { | ||
+ | console.log("Error"); | ||
+ | return; | ||
+ | } | ||
+ | console.log(content); | ||
+ | }); | ||
+ | |||
+ | fs.writeFile(~, ~, callback); | ||
+ | |||
+ | === 이메일 입출력 === | ||
+ | |||
+ | === Command Line 입출력 === | ||
+ | |||
+ | == Core Module == | ||
+ | |||
+ | == 유용한 Node.js 모듈 == | ||
+ | |||
+ | === Util === | ||
+ | |||
+ | var util = require('util'); | ||
+ | |||
+ | util.format(~); | ||
+ | util.inherits(자식, 부모); //--- 상속 | ||
+ | |||
+ | === EventEmitter === | ||
+ | |||
+ | emitter.addListener(event, listener) | ||
+ | emitter.on(event, function(error, result) { ~ }) | ||
+ | emitter.once(event, listener) //--- 한번만 실행 | ||
+ | emitter.removeListener(event, listener) | ||
+ | emitter.removeAllListeners([event]) | ||
+ | emitter.setMaxListeners(n) //--- 이벤트 핸들러 최대 갯수 지정 | ||
+ | emitter.emit(event, ...) //--- 이벤트를 강제로 발생 | ||
+ | |||
+ | var customEvent = new event.EventEmitter(); | ||
+ | customEvent.on(~, ~); | ||
+ | |||
+ | === Express === | ||
+ | 웹 어플리케이션을 만들기 위한 framework 이다. | ||
+ | |||
+ | === Debug === | ||
+ | |||
+ | https://www.npmjs.com/package/debug | ||
+ | |||
+ | $env:DEBUG_COLORS='no' | ||
+ | $env:DEBUG_DEPTH=10 | ||
+ | $env:DEBUG_SHOW_HIDDEN='enabled' | ||
+ | |||
+ | $env:DEBUG='*' | ||
== Console == | == Console == | ||
30번째 줄: | 209번째 줄: | ||
종료시에는 process.exit(0); 또는 Ctrl_C + Ctrl_C를 눌러 줍니다. | 종료시에는 process.exit(0); 또는 Ctrl_C + Ctrl_C를 눌러 줍니다. | ||
+ | |||
+ | == Package 관리 == | ||
+ | |||
+ | modbus 폴더를 만들고 jsmodbus 모듈을 설치 한다. | ||
+ | mkdir -p /work/appl/modbus | ||
+ | cd /work/appl/modbus | ||
+ | npm init | ||
+ | #--- scada_modbus, 0.0.1, Modbus for SCADA, scada.js, 엔터, 엔터, 엔터, OBCon, 엔터, yes | ||
+ | This utility will walk you through creating a package.json file. | ||
+ | It only covers the most common items, and tries to guess sensible defaults. | ||
+ | |||
+ | See `npm help json` for definitive documentation on these fields | ||
+ | and exactly what they do. | ||
+ | |||
+ | Use `npm install <pkg> --save` afterwards to install a package and | ||
+ | save it as a dependency in the package.json file. | ||
+ | |||
+ | Press ^C at any time to quit. | ||
+ | name: (modbus) scada_modbus | ||
+ | version: (1.0.0) 0.0.1 | ||
+ | description: Modbus for SCADA | ||
+ | entry point: (index.js) scada.js | ||
+ | test command: | ||
+ | git repository: | ||
+ | keywords: | ||
+ | author: OBCon | ||
+ | license: (ISC) | ||
+ | About to write to /work/appl/modbus/package.json: | ||
+ | |||
+ | { | ||
+ | "name": "scada_modbus", | ||
+ | "version": "0.0.1", | ||
+ | "description": "Modbus for SCADA", | ||
+ | "main": "scada.js", | ||
+ | "scripts": { | ||
+ | "test": "echo \"Error: no test specified\" && exit 1" | ||
+ | }, | ||
+ | "author": "OBCon", | ||
+ | "license": "ISC" | ||
+ | } | ||
+ | Is this ok? (yes) yes | ||
+ | |||
+ | # npm install [모듈명] --save #--- 모듈 설치후 package.json 파일에 추가 | ||
+ | npm install jsmodbus --save #--- 3.1.0 | ||
+ | npm install -g mocha #--- 5.2.0 | ||
+ | npm install -g sinon #--- 6.3.3 | ||
+ | |||
+ | npm 주요 명령 | ||
+ | |||
+ | npm init : 패키지 관리 설정 파일인 package.json 파일을 생성 한다. | ||
+ | npm install [모듈명] --save : 모듈을 설치하고 package.json 파일에 반영 한다. | ||
+ | npm install [모듈명] --save-dev : 모듈을 설치하고 package.json 파일의 개발용 모듈에 반영 한다. | ||
+ | npm install : package.json 파일을 참조하여 필요한 모듈을 설치 한다. | ||
+ | npm install -g 전역 설치 : CLI로 사용 | ||
+ | |||
+ | # npm init #--- 패키지 관리 설정 파일인 package.json 파일을 생성 한다. | ||
+ | # npm install jsmodbus --save #--- jsmodbus 3.1.0 설치 | ||
+ | vi package.json | ||
+ | { | ||
+ | "name": "scada_modbus", | ||
+ | "version": "0.0.1", | ||
+ | "keywords": [ | ||
+ | "SCADA", | ||
+ | "Modbus" | ||
+ | ], | ||
+ | "description": "Modbus for SCADA", | ||
+ | "main": "scada.js", | ||
+ | "scripts": { | ||
+ | "test": "echo \"Error: no test specified\" && exit 1" | ||
+ | }, | ||
+ | "author": "OBCon Inc.", | ||
+ | "license": "Copyright OBCon Inc. All right reserved.", | ||
+ | "dependencies": { | ||
+ | "jsmodbus": "^3.1.0" | ||
+ | }, | ||
+ | "devDependencies": {} | ||
+ | } | ||
+ | npm install #--- package.json 파일로 설치를 시작 한다. | ||
+ | npm update | ||
+ | |||
+ | npm install -g mocha #--- mocha 5.2.0 전역 설치 | ||
+ | npm install -g sinon #--- sinon 6.3.3 전역 설치 | ||
+ | |||
+ | npm list #--- 설치된 모듈 목록 조회 | ||
+ | npm list -g --depth=0 #--- 전역 설치된 모듈 목록 조회 | ||
+ | |||
+ | npm uninstall ~ | ||
+ | npm uninstall ~ --save|--save-dev | ||
+ | |||
+ | npm version major #--- Major 버전을 올립니다. | ||
+ | npm version minor #--- Minor 버전을 올립니다. | ||
+ | npm version patch #--- Patch 버전을 올립니다. | ||
+ | |||
+ | 참고 문헌 | ||
+ | * https://heropy.blog/2018/02/18/node-js-npm/ | ||
== Test Framework == | == Test Framework == | ||
− | 참고 문헌 | + | <span style="color:#008000;"><span style="font-size:larger;">테스트 방식</span></span> |
+ | |||
+ | *TDD (Test-Driven Development) : 테스트 자체에 집중 | ||
+ | *BDD (Behaviour-Driven Development) : 비즈니스 요구 사항에 집중 | ||
+ | |||
+ | |||
+ | |||
+ | <span style="color:#008000;"><span style="font-size:larger;">Karma 모듈을 설치 합니다.</span></span> | ||
+ | |||
+ | *설정 파일 : karma.conf.js, test-main.js | ||
+ | *테스트 모듈 실행 : karma start karma-conf.js | ||
+ | |||
+ | npm install karma-cli -g<br/>npm install karma -g --save-dev<br/>npm install karma-coverage --save-dev<br/>npm install karma-jasmine --save-dev<br/># npm install karma-chrome-launcher --save-dev<br/>karma --version | ||
+ | |||
+ | karma init karma.conf.js<br/># Which testing framework do you want to use ? jasmine<br/># Do you want to use Require.js ? yes<br/># Do you want to capture any browsers automatically ? Chrome<br/># What is the location of your source and test files ?<br/># Should any of the files included by the previous patterns be excluded ?<br/># Do you wanna generate a bootstrap file for RequireJS? yes<br/># Do you want Karma to watch all the files and run the tests on change ? yes | ||
+ | |||
+ | 환경 변수 설정 : CHROME_BIN = chrome.exe | ||
+ | |||
+ | |||
+ | |||
+ | <span style="color: rgb(0, 128, 0); font-size: 15.6000003814697px; line-height: 24.9600009918213px;">Jasmine 모듈을 설치 합니다.</span> | ||
+ | |||
+ | *설정 파일 : spec/support/jasmine.json | ||
+ | *테스트 모듈 실행 | ||
+ | **js/sample.js, test/sampleSpec.js | ||
+ | **모든 Test 프로그램은 ~Spec.js 형태로 작성하여야 합니다. | ||
+ | **jasmine-node --test-dir test --color --verbose | ||
+ | **jasmine-node --test-dir test --autotest --watch test --color | ||
+ | |||
+ | npm install jasmine -g<br/>jasmine init | ||
+ | |||
+ | npm install jasmine-node -g<br/>jasmine-node --version | ||
+ | |||
+ | <br/>참고 문헌 | ||
− | *http://blog.outsider.ne.kr/770 | + | *Karma |
+ | **[http://programmingsummaries.tistory.com/327 http://programmingsummaries.tistory.com/327] | ||
+ | **[http://mobicon.tistory.com/407 http://mobicon.tistory.com/407] | ||
+ | **[http://webframeworks.kr/tutorials/angularjs/angularjs_unit_test/ http://webframeworks.kr/tutorials/angularjs/angularjs_unit_test/] | ||
+ | *Mocha | ||
+ | **[http://blog.outsider.ne.kr/770 http://blog.outsider.ne.kr/770] | ||
+ | **[http://unitjs.com/guide/mocha.html http://unitjs.com/guide/mocha.html] | ||
+ | *Supertest | ||
+ | **[http://hatemogi.com/holiday-project-day-03/ http://hatemogi.com/holiday-project-day-03/] | ||
+ | *[http://blog.outsider.ne.kr/1078 http://blog.outsider.ne.kr/1078] | ||
+ | *[http://required.cafe24.com/blog/2014/05/hello-karmajs/ http://required.cafe24.com/blog/2014/05/hello-karmajs/] | ||
== 참고 문헌 == | == 참고 문헌 == |
2018년 9월 24일 (월) 22:05 기준 최신판
Server Side JavaScript인 Node.js를 정리 합니다.
- 홈페이지 : http://nodejs.org/
- 다운로드 : http://nodejs.org/download/
- 라이선스 :
- 플랫폼 : JavaScript
목차
Node.js 개요
Node.js는 서버사이드 자바스크립트이며 Google의 자바스크립트 엔진인 V8이 빌트인되어 있습니다. Event 기반이며 non-blocking I/O를 지원합니다. 자바스크립트의 표준라이브러리 프로젝트인 CommonJS의모듈시스템을 지원합니다.
- Event loop 방식
- 동작 요청시 동작이 완료될 경우에 실행될 Call Back을 지정하는 방식
Node.js 설치
CentOS에서 설치
yum install nodejs npm
Windows에서 설치
다운로드 사이트에서 node-v0.12.0-x64.msi 파일을 다운로드 하여 설치 합니다.
Node.js 문법
Node.js 기초
내장 상수
내장 함수와 특수 함수
상수/변수 선언
객체 선언
Module 선언
Node.js는 CommonJS 형태의 모듈을 사용 한다.
별도의 파일에 생성할 모듈을 위한 코드를 작성 한다. 작성한 코드를 modules.exports(={}) 객체에 할당하면 다른 프로그램에서 호출하여 사용할 수 있다.
모듈을 불러쓰는 프로그램
"use strict"; var myModule=require("myModule.js"); var yourModule=require("yourFolder"); #--- Folder가 지정될 경우 index.js 파일이 호출된다.
모듈을 작성한 프로그램 (myModule.js)
#--- module.exports와 exports는 같은 것이다. module.exports = { #--- 여기에 코드를 기술 한다. } exports.~ = { ~ } #--- 개발 코드를 등록 한다.
연산자
조건문/반복문
오류 처리
try { } catch(error) { }
기타 문법
Type 변환
입출력
전역 변수
- 전역 객체 : global
- process.env : 애플리케이션 실행 환경
- process.version : node.js 버전
- process.arch : CPU 정보
- process.platform : Platform 정보
- process.argv : 실행 명령 파라미터
- Event 전역 객체
- process.exit : 애플리케이션 종료 이벤트
- process.beforeExit : 애플리케이션이 종료 되기 전에 발생하는 이벤트
- process.uncaughtException : 예외 처리되지 않은 이벤트
- 전역 함수
- process.exit : 애플리케이션 종료
- process.nextTick : 이벤트 루프내 동작을 모두 실행한 후 콜백 실행
- setTimeout : 동작 지연
- setEnterval : 동작 반복
- clearTimeout
- console.log(~), console.info(~), console.warn(~), console.error(~)
- console.time(TIMER_NAME), console.timeEnd(TIMER_NAME)
global.console.log(~) console.log(~) //--- global은 생략 가능
브라우저 입출력
Cookie 입출력
세션 입출력
데이터베이스 입출력
파일 입출력
//--- __dirname : 현재 폴더 //--- __filename : 현재 파일명 var pathUtil = require('path'); var path = __dirname + pathUtil.sep + 'logo.png'; pathUtil.join(~, ~); path = pathUtil.normalize(path); // path.basename(); // path.dirname(); // path.extname(); var info = path.parse(~); var fs = require('fs'); fs.access(~, mode, callback) //--- fs.F_OK, fs.R_OK, fs.W_OK, fs.X_OK fs.accessSync(~, mode) fs.stat(~, callback); fs.statSync(~); var fd = fs.openSync(~, 'rwa); fs.closeSync(fd); fs.open(~, 'rwa', function(error, fd) { ~ }); fs.close(fs, callback); fs.unlink(~); fs.rename(~, ~, callback); fs.renameSync(~, ~) fs.readdir(~, callback) fs.readdirSync(~) fs.mkdir(~, callback) fs.rmdir(~, callback) fs.mkdirSync(~) fs.rmdirSync(~)
동기식
var fs = require('fs'); var content = fs.readFileSync("readme.txt", "utf8"); console.log(content); fs.writeFileSync(~, ~)
비동기식
var fs = require('fs'); fs.readFile("readme.txt", "utf9", function(error, content) { if (error) { console.log("Error"); return; } console.log(content); }); fs.writeFile(~, ~, callback);
이메일 입출력
Command Line 입출력
Core Module
유용한 Node.js 모듈
Util
var util = require('util'); util.format(~); util.inherits(자식, 부모); //--- 상속
EventEmitter
emitter.addListener(event, listener) emitter.on(event, function(error, result) { ~ }) emitter.once(event, listener) //--- 한번만 실행 emitter.removeListener(event, listener) emitter.removeAllListeners([event]) emitter.setMaxListeners(n) //--- 이벤트 핸들러 최대 갯수 지정 emitter.emit(event, ...) //--- 이벤트를 강제로 발생 var customEvent = new event.EventEmitter(); customEvent.on(~, ~);
Express
웹 어플리케이션을 만들기 위한 framework 이다.
Debug
https://www.npmjs.com/package/debug
$env:DEBUG_COLORS='no' $env:DEBUG_DEPTH=10 $env:DEBUG_SHOW_HIDDEN='enabled' $env:DEBUG='*'
Console
node 명령을 사용하여 node Console을 실행할 수 있습니다.
종료시에는 process.exit(0); 또는 Ctrl_C + Ctrl_C를 눌러 줍니다.
Package 관리
modbus 폴더를 만들고 jsmodbus 모듈을 설치 한다.
mkdir -p /work/appl/modbus cd /work/appl/modbus npm init #--- scada_modbus, 0.0.1, Modbus for SCADA, scada.js, 엔터, 엔터, 엔터, OBCon, 엔터, yes This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg> --save` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. name: (modbus) scada_modbus version: (1.0.0) 0.0.1 description: Modbus for SCADA entry point: (index.js) scada.js test command: git repository: keywords: author: OBCon license: (ISC) About to write to /work/appl/modbus/package.json: { "name": "scada_modbus", "version": "0.0.1", "description": "Modbus for SCADA", "main": "scada.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "OBCon", "license": "ISC" } Is this ok? (yes) yes # npm install [모듈명] --save #--- 모듈 설치후 package.json 파일에 추가 npm install jsmodbus --save #--- 3.1.0 npm install -g mocha #--- 5.2.0 npm install -g sinon #--- 6.3.3
npm 주요 명령
npm init : 패키지 관리 설정 파일인 package.json 파일을 생성 한다. npm install [모듈명] --save : 모듈을 설치하고 package.json 파일에 반영 한다. npm install [모듈명] --save-dev : 모듈을 설치하고 package.json 파일의 개발용 모듈에 반영 한다. npm install : package.json 파일을 참조하여 필요한 모듈을 설치 한다. npm install -g 전역 설치 : CLI로 사용
# npm init #--- 패키지 관리 설정 파일인 package.json 파일을 생성 한다. # npm install jsmodbus --save #--- jsmodbus 3.1.0 설치 vi package.json { "name": "scada_modbus", "version": "0.0.1", "keywords": [ "SCADA", "Modbus" ], "description": "Modbus for SCADA", "main": "scada.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "OBCon Inc.", "license": "Copyright OBCon Inc. All right reserved.", "dependencies": { "jsmodbus": "^3.1.0" }, "devDependencies": {} } npm install #--- package.json 파일로 설치를 시작 한다. npm update npm install -g mocha #--- mocha 5.2.0 전역 설치 npm install -g sinon #--- sinon 6.3.3 전역 설치 npm list #--- 설치된 모듈 목록 조회 npm list -g --depth=0 #--- 전역 설치된 모듈 목록 조회 npm uninstall ~ npm uninstall ~ --save|--save-dev npm version major #--- Major 버전을 올립니다. npm version minor #--- Minor 버전을 올립니다. npm version patch #--- Patch 버전을 올립니다.
참고 문헌
Test Framework
테스트 방식
- TDD (Test-Driven Development) : 테스트 자체에 집중
- BDD (Behaviour-Driven Development) : 비즈니스 요구 사항에 집중
Karma 모듈을 설치 합니다.
- 설정 파일 : karma.conf.js, test-main.js
- 테스트 모듈 실행 : karma start karma-conf.js
npm install karma-cli -g
npm install karma -g --save-dev
npm install karma-coverage --save-dev
npm install karma-jasmine --save-dev
# npm install karma-chrome-launcher --save-dev
karma --version
karma init karma.conf.js
# Which testing framework do you want to use ? jasmine
# Do you want to use Require.js ? yes
# Do you want to capture any browsers automatically ? Chrome
# What is the location of your source and test files ?
# Should any of the files included by the previous patterns be excluded ?
# Do you wanna generate a bootstrap file for RequireJS? yes
# Do you want Karma to watch all the files and run the tests on change ? yes
환경 변수 설정 : CHROME_BIN = chrome.exe
Jasmine 모듈을 설치 합니다.
- 설정 파일 : spec/support/jasmine.json
- 테스트 모듈 실행
- js/sample.js, test/sampleSpec.js
- 모든 Test 프로그램은 ~Spec.js 형태로 작성하여야 합니다.
- jasmine-node --test-dir test --color --verbose
- jasmine-node --test-dir test --autotest --watch test --color
npm install jasmine -g
jasmine init
npm install jasmine-node -g
jasmine-node --version
참고 문헌
- Karma
- Mocha
- Supertest
- http://blog.outsider.ne.kr/1078
- http://required.cafe24.com/blog/2014/05/hello-karmajs/