LoginSignup
6
6

More than 5 years have passed since last update.

テストケースを書いてみよう

Last updated at Posted at 2015-08-09

はじめに

『テスタブルJavaScript』を少し読み、テストケースを書いてみました。ES6も触ってみたいということで babel + gulp + mocha + power assert という組み合わせを試してみました。

参考にした記事を紹介します。

この記事では、使用したディレクトリ構造と使用したファイルを紹介します。(もし、気づいたことがありましたら、ご指摘いただければ幸いです。)

ディレクトリ構造

使用したディレクトリ構造は下記のディレクトリ構造になります。

.
├── gulpfile.js
├── package.json
├── src
│   └── sum.js
└── test
    ├── mocha.opts
    └── test_sum.js

テストの実行方法は下記のコマンドラインになります。

$ npm install
$ gulp
$ npm test

ファイル

まずは、package.jsonを見てみます。

package.json
{
  "name": "sandbox",
  "version": "1.0.0",
  "description": "babel + gulp + mocha + power assert",
  "dependencies": {
    "babel": "^5.8.21"
  },
  "devDependencies": {
    "babel": "^5.8.21",
    "espower-babel": "^3.2.0",
    "gulp": "^3.9.0",
    "gulp-babel": "^5.2.0",
    "mocha": "^2.2.5",
    "power-assert": "^0.11.0"
  },
  "scripts": {
    "test": "mocha"
  }
}

次にgulpfile.jsを見てみます。

gulpfile.js
var gulp = require("gulp");
var babel = require("gulp-babel");

gulp.task("default", function () {
  return gulp.src("src/*.js")
    .pipe(babel())
    .pipe(gulp.dest("dist"));
});

mocha.optsを見てみます。

mocha.opts
--compilers js:espower-babel/guess

test_sum.jsを見てみます。

test_sum.js
import assert from 'power-assert'
import sum from '../src/sum'

describe('sum', () => {
  it('12 + 23', () => {
    assert(sum(12, 23) === 35)
  })
  it('234', () => {
    assert(sum(234) === null)
  })
  it('abc + def', () => {
    assert(sum('abc', 'def') === null)
  })
  it('1 + NaN', () => {
    assert(sum(1, NaN) === null)
  })
  it('NaN + 2', () => {
    assert(sum(NaN, 2) === null)
  })
  it('1 + Infinity', () => {
    assert(sum(1, Infinity) === null)
  })
  it('Infinity + 2', () => {
    assert(sum(Infinity, 2) === null)
  })
  it('1 + false', () => {
    assert(sum(1, false) === null)
  })
  it('true + 2', () => {
    assert(sum(true, 2) === null)
  })
})

つまらないかもしれませんが、これらを用いれば、sum.jsを実装できます。なので、sum.jsの紹介はまた今度にしましょう。

振り返り

mocha.optsの--require espower-babel/guessを忘れると、mochaと同じ出力になってしまいます。ここはちょっとハマりました。

本当はBrowserifyも使ってみたかったのですが、間に合いませんでした。機会があれば、試してみたいと思います。

requireの使い方が少し不安です。実践では、どのように使っているのか気になるところです。

Babelはアロー関数やセミコロンがないところが良いですね。

最後に、sum.jsを見てみましょう。

sum.js
/**
 * @param {Number} x
 * @param {Number} y
 * @return {Number} Sum of x and y
 */
module.exports = function sum(x, y) {
  if (arguments.length != 2) return null
  if (typeof x != 'number' || typeof y != 'number') return null
  if (x.toString() === 'NaN' || y.toString() === 'NaN') return null
  if (x.toString() === 'Infinity' || y.toString() === 'Infinity') return null
  return x + y
}
6
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6