カルマ/モカとチャイによるユニットテストでチャイプラグインを使用できるか、特別なカルマ互換プラグインに変換する必要がありますか?Kaia/Mocha/Chaiでchai-date-stringのようなChaiプラグインを使用するにはどうすればよいですか?
を使って、expect(requestBody.time).to.be.a.dateString();
のようなことをしたいのですが、NPMモジュールとしてインストールし、テストファイルにそれらを必要とすることはありません。
karma-chai-plugins私は他のチャイプラグインを使用するように設計されていると思っていましたが(これはバンドルされている数を超えています)、NPMモジュールとして追加してから、Chaiプラグイン名をフレームワークリストが、これは機能しませんでした。
マイkarma.conf.js
: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
})
}
バージョン(私は明示的に依存関係の問題を回避するために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"
}
結果:
> [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'を使っているために、同じ*エラーが発生した場合。そこからそれを削除する必要があります。 (これは私の最初の段落で暗示されていたのは、 'フレームワークに入ることを許可する唯一のものは'カルマチャイプラグインですが、あなたはそれを使うことができないからです。)そして、はい、私はbrowserifyを使っています。あなたのテストファイルに 'var chaiDateString = require(" chai-date-string ")'を使って、各テストファイルに 'chai.use(chaiDateString)'を置いておけば、既に設定したものを使うことができます。 – Louis
しかし 'chai-date-string'をすべてのテストファイルで' require 'する必要なしに一度だけセットアップしたい場合は、 'karma.conf.js'にあるBrowserify設定に依存することはできません。テストファイルとは別に 'chai-date-string'を扱う必要があります。私はKarmaでBrowserifyを使用していないので、この 'karma.conf.js'の中で必要な設定を行うことができるかどうかはわかりません。 – Louis