Karma/Mocha 및 Chai의 단위 테스트에서 Chai 플러그인을 사용할 수 있어야합니까? 아니면 특별한 karma 호환 플러그인으로 변환해야합니까?카르마/모카/차이 (Chai-date-string)와 같은 차이 (Chai) 플러그인을 어떻게 사용합니까?
chai-date-string을 사용하여 expect(requestBody.time).to.be.a.dateString();
과 같은 작업을하고 싶지만 NPM 모듈로 설치하여 테스트 파일에 필요로하는 행운이 없었습니다.
karma-chai-plugins 나는 다른 chai 플러그인 (심지어 번들로 제공되는 것 이상)을 사용하도록 설계되었지만 NPM 모듈로 추가 한 다음 프레임 워크에 Chai 플러그인 이름을 추가한다고 생각했습니다 목록,하지만이 작동하지 않았다.
내 karma.conf.js
:
"devDependencies": {
"browserify": "^14.4.0",
"chai": "^4.1.2",
"chai-as-promised": "^7.1.1",
"chai-date-string": "^0.1.0",
"karma": "^1.7.1",
"karma-beep-reporter": "^0.1.4",
"karma-browserify": "^5.1.1",
"karma-chai-plugins": "^0.9.0",
"karma-chrome-launcher": "^2.2.0",
"karma-cli": "^1.0.1",
"karma-mocha": "^1.3.0",
"karma-mocha-reporter": "^2.2.4",
"karma-sinon-chai": "^1.3.2",
"mocha": "^3.5.3",
"sinon": "^2.4.1",
"sinon-chai": "^2.14.0",
"uglifyjs": "^2.4.11",
"url": "^0.11.0",
"watchify": "^3.9.0"
}
결과 다음과 같은 오류가 : package.json
에서
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['mocha', 'chai', 'chai-date-string', 'sinon-chai', 'browserify'],
client: { chai: { includeStack: true } },
files: [ 'playmob.js', 'test/**/*_test.js' ],
preprocessors: {
'test/**/*.js': [ 'browserify' ]
},
browserify: {
debug: true,
},
exclude: [ ],
reporters: ['mocha', 'beep'],
mochaReporter: { ignoreSkipped: true },
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['ChromeHeadless'],
singleRun: false,
concurrency: Infinity
})
}
버전 (I 명시 적으로 의존성 문제를 해결하기 위해 chai-as-promised
의 최신 버전을 설치했다)
> [email protected] test /Users/jschuur/Code/Playmob/js_api_lib
> karma start
/Users/jschuur/Code/Playmob/js_api_lib/node_modules/di/lib/injector.js:9
throw error('No provider for "' + name + '"!');
^
Error: No provider for "framework:chai-date-string"! (Resolving: framework:chai-date-string)
at error (/Users/jschuur/Code/Playmob/js_api_lib/node_modules/di/lib/injector.js:22:12)
내 설정은 이미 browserify를 사용하고 있으며, 실제로 다른 테스트에서'karma.conf.js' 어딘가에 설정하지 않고'url' 모듈을 사용하므로 훨씬 더 확신하지 못했습니다 설치가 필요할 것입니다. 당신의 추천을 거쳤고, playmob_test.js 파일의 상단에'chai.use (chaiDateString);'을 덧붙이려고 시도 했었고'node_modules/chai-date-string/index.js ''내 '파일'블록에 있지만 행운은 없습니다. 나는 여전히 같은 오류가 발생합니다. –
'frameworks' 설정에서 여전히'chai-date-string'을 사용하고 있기 때문에 * 같은 * 오류가 발생한다면. 거기에서 제거해야합니다. (이것은 첫 번째 단락에서 암시 한 것입니다. 왜냐하면'frameworks에있을 수있는 유일한 것은'karma-chai-plugins '이지만 사용할 수 없기 때문입니다.) 그리고 네, browserify를 사용하고 있습니다. 이미 테스트 파일에'var chaiDateString = require ("chai-date-string")'을 사용하고 각 테스트 파일에'chai.use (chaiDateString)'을 넣으면 이미 가지고있는 설정을 사용할 수있을 것입니다. – Louis
그러나 모든 테스트 파일에서'require '하지 않고'chai-date-string'을 한 번 설정하고 싶다면'karma.conf.js'에있는 Browserify 설정에 의존 할 수 없습니다. 테스트 파일과는 별도로'chai-date-string'을 다루어야 할 것입니다.나는 Karma에서 Browserify를 사용하지 않았으므로,이'karma.conf.js '에 필요한 구성을 수행 할 수 있는지 여부를 모르겠습니다. – Louis