+
+ {{ count }}
+
+
+
+
+
+```
+
+そして、以下のようなコードの `test/Counter.spec.js` という名前のテストファイルを作成します。
+
+```js
+import { expect } from 'chai'
+import { shallow } from '@vue/test-utils'
+import Counter from '../src/Counter.vue'
+
+describe('Counter.vue', () => {
+ it('increments count when button is clicked', () => {
+ const wrapper = shallow(Counter)
+ wrapper.find('button').trigger('click')
+ expect(wrapper.find('div').text()).contains('1')
+ })
+})
+```
+
+テストを実行できるようになりました。
+
+```
+npm run test
+```
+
+やった!テストが走った。
+
+### カバレッジ
+
+Karma にコードカバレッジをセットアップするために、 `karma-coverage` プラグインを使います。
+
+デフォルトでは、 `karma-coverage` はソースマップをカバレッジレポートをマップすることに使用しません。だから、確実に正しくカバレッジがマップされるために `babel-plugin-istanbul` を使用します。
+
+`karma-coverage` と `babel-plugin-istanbul` と `cross-env` をインストールします。
+
+```
+npm install --save-dev karma-coverage cross-env
+```
+
+環境変数の `BABEL_ENV` をセットするために `cross-env` を使います。テストをコンパイルする時に `babel-plugin-istanbul` を使用します。プロダクションコードをコンパイルする時は `babel-plugin-istnabul` を含めるべきではありません。
+
+```
+npm install --save-dev babel-plugin-istanbul
+```
+
+`BABEL_ENV` に test がセットされた時、 `babel-plugin-istanbul` を使用するために `.babelrc` ファイルを変更します。
+
+```json
+{
+ "presets": [
+ ["env", { "modules": false }],
+ "stage-3"
+ ],
+ "env": {
+ "test": {
+ "plugins": ["istanbul"]
+ }
+ }
+}
+```
+
+カバレッジを取るために karma.conf.js ファイルを変更します。 `coverage` を reporters 配列に加えます。そして、 coverageReporter を加えます。
+
+```js
+// karma.conf.js
+
+module.exports = function (config) {
+ config.set({
+ // ...
+
+ reporters: ['spec', 'coverage'],
+
+ coverageReporter: {
+ dir: './coverage',
+ reporters: [
+ { type: 'lcov', subdir: '.' },
+ { type: 'text-summary' }
+ ]
+ }
+ })
+}
+```
+
+そして、 `BABEL_ENV` をセットするために `test` スクリプトを変更します。
+
+```json
+// package.json
+{
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test karma start --single-run"
+ }
+}
+```
+
+### リソース
+
+- [このセットアップの例](https://github.com/eddyerburgh/vue-test-utils-karma-example)
+- [Karma](http://karma-runner.github.io/)
+- [Mocha](https://mochajs.org/)
+- [Chai](http://chaijs.com/)
+- [Sinon](http://sinonjs.org/)