【发布时间】:2017-10-03 10:06:41
【问题描述】:
应该能够使用任何带有 Karma/Mocha 和 Chai 单元测试的 Chai 插件,还是需要将其转换为特殊的 karma 兼容插件?
我想使用chai-date-string 来执行expect(requestBody.time).to.be.a.dateString(); 之类的操作,但只是将它们安装为 NPM 模块并在我的测试文件中要求它们时运气不佳。
然后我遇到了karma-chai-plugins,我认为它旨在使用其他 chai 插件(甚至超出它捆绑的少数插件),但将其添加为 NPM 模块,然后将 Chai 插件名称添加到框架列表,但这不起作用。
我的karma.conf.js:
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
})
}
package.json 中的版本(我必须显式安装更新版本的chai-as-promised 才能解决依赖问题):
"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"
}
导致以下错误:
> playmobjs@0.2.0 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)
【问题讨论】:
标签: unit-testing karma-runner chai