【jasmine + Karma】 에 의한 javascript 단체 테스트를 해 보았다
karma에서 사용하는 브라우저는 phantomjs를 사용합니다.
사전 작업
jasmine, karma 등 필요한 라이브러리를 install합니다.
package.json의 devDependecies에 다음을 추가하고 npm install을 수행합니다.
pacage.json"devDependencies": {
    "jasmine": "^2.5.2",
    "karma": "^1.3.0",
    "karma-coverage": "^1.1.1",
    "karma-jasmine": "^1.1.0",
    "karma-phantomjs-launcher": "^1.0.2",
    "karma-spec-reporter": "0.0.26",
    "phantomjs-prebuilt": "^2.1.14"
  }
테스트 실시 후에 coverage도 볼 수 있도록 하고 싶기 때문에, 「karma-coverage」를.
기본 콘솔은 보기 어려우므로 "karma-spec-reporter"에서 콘솔 표시를 변경합니다.
 karma.conf.js 만들기
karma init로 작성된 karma.conf.js를 아래와 같이 편집합니다.
karma.conf.jsmodule.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
      "src/script/js/*.js",
      "spec/*.js"
    ],
    exclude: [],
    preprocessors: {
      'src/script/js/*.js': ['coverage']
    },
    reporters: ['spec', 'coverage'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['PhantomJS'],
    singleRun: false,
    concurrency: Infinity
  })
}
coverage의 대상이 되는 파일은, preprocessors 에 기술해, reporters에 coverage를 추가하고 있습니다.
또한 콘솔 표기법을 쉽게 볼 수 있도록 reporters의 progress를 spec으로 변경했습니다.
preprocessors: {
  'src/script/js/*.js': ['coverage']
},
karma.conf.js- reporters: ['progress'],
+ reporters: ['spec', 'coverage'],
 jasmine 단위 테스트 작성
테스트 대상의 js 는 demo.js 로 하고 object 의 값을 테스트해 보고 싶습니다.
테스트 파일은 demoSpec.js이며 demo.js의 testTarget name 값을 테스트합니다.
demo.jsvar testTarget = {};
testTarget.name = "jasmine-test";
demoSpec.jsdescribe("demoTest", function() {
    it("demo getName", function() {
        expect(testTarget.name).toEqual("jasmine-test");
    })
});
 테스트 실행
karma.conf.js와 같은 계층에서 다음을 실행하면 karma가 실행됩니다.
옵션 --single-run 을 붙이지 않는 경우는, karma의 WebServer가 계속 기동해, 항상 소스를 감시해 변경이 있으면 테스트를 자동으로 돌리는 형태가 됩니다.
$ node_modules/karma/bin/karma --single-run 
단지 이것이라면 path를 치는 것도 번거롭기 때문에 package.json에 script로 추가합니다.
package.json"scripts": {
  "test": "npm run deleteCoverage && npm run karma",
  "karma": "karma start --single-run",
  "deleteCoverage": "rm -rf coverage/",
  "clean": "rm -rf node_modules/ && npm cache clean"
},
스크립트를 추가 한 후,
$ npm test
그래서 카르마가 달립니다.
 테스트 결과
$ npm test
  demoTest
    ✓ demo getName
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 SUCCESS (0.004 secs / 0.002 secs)
TOTAL: 1 SUCCESS
테스트가 실패하면
$ npm test
demoTest
    ✗ demo getName
    Expected 'jasmine-test' to equal 'jasmine-testttt'.
    spec/demoSpec.js:3:40
    loaded@http://localhost:9876/context.js:151:17
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.004 secs / 0.002 secs)
 coverage
커버리지는 Coverage > PhantomJs > index.html
그리고 html 파일로 토출됩니다.
 
 결론
jasmine과 karma에서 단위 테스트를 작성하는 방법을 알았으므로 다음은 Angular 단위 테스트를 jasmine으로 작성하려고합니다.
이번 소스는 아래 URL에서 볼 수 있습니다.
 htps : // 기주 b. 코 m / 요 헤이타 / 그럼 s 미네 카 r
 2017/01/03 추가
Angular의 단위 테스트에 대해 jasmine으로 가 보았던 것을 공개했습니다.
 【jasmine + Karma】에 의한 AngularJs 단체 테스트를 해 보았다
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(【jasmine + Karma】 에 의한 javascript 단체 테스트를 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/TKR/items/14ab1b410614e6527633
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
"devDependencies": {
    "jasmine": "^2.5.2",
    "karma": "^1.3.0",
    "karma-coverage": "^1.1.1",
    "karma-jasmine": "^1.1.0",
    "karma-phantomjs-launcher": "^1.0.2",
    "karma-spec-reporter": "0.0.26",
    "phantomjs-prebuilt": "^2.1.14"
  }
karma init로 작성된 karma.conf.js를 아래와 같이 편집합니다.
karma.conf.js
module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
      "src/script/js/*.js",
      "spec/*.js"
    ],
    exclude: [],
    preprocessors: {
      'src/script/js/*.js': ['coverage']
    },
    reporters: ['spec', 'coverage'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['PhantomJS'],
    singleRun: false,
    concurrency: Infinity
  })
}
coverage의 대상이 되는 파일은, preprocessors 에 기술해, reporters에 coverage를 추가하고 있습니다.
또한 콘솔 표기법을 쉽게 볼 수 있도록 reporters의 progress를 spec으로 변경했습니다.
preprocessors: {
  'src/script/js/*.js': ['coverage']
},
karma.conf.js
- reporters: ['progress'],
+ reporters: ['spec', 'coverage'],
jasmine 단위 테스트 작성
테스트 대상의 js 는 demo.js 로 하고 object 의 값을 테스트해 보고 싶습니다.
테스트 파일은 demoSpec.js이며 demo.js의 testTarget name 값을 테스트합니다.
demo.jsvar testTarget = {};
testTarget.name = "jasmine-test";
demoSpec.jsdescribe("demoTest", function() {
    it("demo getName", function() {
        expect(testTarget.name).toEqual("jasmine-test");
    })
});
 테스트 실행
karma.conf.js와 같은 계층에서 다음을 실행하면 karma가 실행됩니다.
옵션 --single-run 을 붙이지 않는 경우는, karma의 WebServer가 계속 기동해, 항상 소스를 감시해 변경이 있으면 테스트를 자동으로 돌리는 형태가 됩니다.
$ node_modules/karma/bin/karma --single-run 
단지 이것이라면 path를 치는 것도 번거롭기 때문에 package.json에 script로 추가합니다.
package.json"scripts": {
  "test": "npm run deleteCoverage && npm run karma",
  "karma": "karma start --single-run",
  "deleteCoverage": "rm -rf coverage/",
  "clean": "rm -rf node_modules/ && npm cache clean"
},
스크립트를 추가 한 후,
$ npm test
그래서 카르마가 달립니다.
 테스트 결과
$ npm test
  demoTest
    ✓ demo getName
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 SUCCESS (0.004 secs / 0.002 secs)
TOTAL: 1 SUCCESS
테스트가 실패하면
$ npm test
demoTest
    ✗ demo getName
    Expected 'jasmine-test' to equal 'jasmine-testttt'.
    spec/demoSpec.js:3:40
    loaded@http://localhost:9876/context.js:151:17
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.004 secs / 0.002 secs)
 coverage
커버리지는 Coverage > PhantomJs > index.html
그리고 html 파일로 토출됩니다.
 
 결론
jasmine과 karma에서 단위 테스트를 작성하는 방법을 알았으므로 다음은 Angular 단위 테스트를 jasmine으로 작성하려고합니다.
이번 소스는 아래 URL에서 볼 수 있습니다.
 htps : // 기주 b. 코 m / 요 헤이타 / 그럼 s 미네 카 r
 2017/01/03 추가
Angular의 단위 테스트에 대해 jasmine으로 가 보았던 것을 공개했습니다.
 【jasmine + Karma】에 의한 AngularJs 단체 테스트를 해 보았다
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(【jasmine + Karma】 에 의한 javascript 단체 테스트를 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/TKR/items/14ab1b410614e6527633
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
var testTarget = {};
testTarget.name = "jasmine-test";
describe("demoTest", function() {
    it("demo getName", function() {
        expect(testTarget.name).toEqual("jasmine-test");
    })
});
karma.conf.js와 같은 계층에서 다음을 실행하면 karma가 실행됩니다.
옵션 --single-run 을 붙이지 않는 경우는, karma의 WebServer가 계속 기동해, 항상 소스를 감시해 변경이 있으면 테스트를 자동으로 돌리는 형태가 됩니다.
$ node_modules/karma/bin/karma --single-run 
단지 이것이라면 path를 치는 것도 번거롭기 때문에 package.json에 script로 추가합니다.
package.json
"scripts": {
  "test": "npm run deleteCoverage && npm run karma",
  "karma": "karma start --single-run",
  "deleteCoverage": "rm -rf coverage/",
  "clean": "rm -rf node_modules/ && npm cache clean"
},
스크립트를 추가 한 후,
$ npm test
그래서 카르마가 달립니다.
테스트 결과
$ npm test
  demoTest
    ✓ demo getName
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 SUCCESS (0.004 secs / 0.002 secs)
TOTAL: 1 SUCCESS
테스트가 실패하면
$ npm test
demoTest
    ✗ demo getName
    Expected 'jasmine-test' to equal 'jasmine-testttt'.
    spec/demoSpec.js:3:40
    loaded@http://localhost:9876/context.js:151:17
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.004 secs / 0.002 secs)
coverage
커버리지는 Coverage > PhantomJs > index.html
그리고 html 파일로 토출됩니다.

결론
jasmine과 karma에서 단위 테스트를 작성하는 방법을 알았으므로 다음은 Angular 단위 테스트를 jasmine으로 작성하려고합니다.
이번 소스는 아래 URL에서 볼 수 있습니다.
 htps : // 기주 b. 코 m / 요 헤이타 / 그럼 s 미네 카 r
 2017/01/03 추가
Angular의 단위 테스트에 대해 jasmine으로 가 보았던 것을 공개했습니다.
 【jasmine + Karma】에 의한 AngularJs 단체 테스트를 해 보았다
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(【jasmine + Karma】 에 의한 javascript 단체 테스트를 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/TKR/items/14ab1b410614e6527633
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
Angular의 단위 테스트에 대해 jasmine으로 가 보았던 것을 공개했습니다.
【jasmine + Karma】에 의한 AngularJs 단체 테스트를 해 보았다
Reference
이 문제에 관하여(【jasmine + Karma】 에 의한 javascript 단체 테스트를 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TKR/items/14ab1b410614e6527633텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)