LoginSignup
3
4

More than 5 years have passed since last update.

初めてのテストコード

Last updated at Posted at 2015-06-23

javascript, node.js などにおいてテストコードを自分で書いたことがなかった人が学習した内容をまとめます。

「javascript テスト」と調べるとjasmine, JUnit, karma, ... 等々たくさん出てきてなにからすれば、どういう手順で導入する目的が見えるのかわかりづらいですね。

テストコードはできるだけ単純に coffee で書きたく、またテスト本体も coffee で書き始めるのにとっつきやすいものがあればよいのですが。

僕が調べた中で一番シンプルに導入できて、実際に使いたくなる手軽さがある手法は、gulp というビルドの自動化ツールから mocha を使うことです。

まず、テストコードを書きます。

sampleSpec.coffee
require 'should'

foo = require('../src/sample')

describe 'foo()', ->
    it 'は引数ありなら正負を逆にした値を返す', ->
        foo(9).should.equal -9
        foo(-3).should.equal 3
    it 'は0なら0を返す', ->
        foo(0).should.equal 0
    it 'は引数なしなら0を返す', ->
        foo().should.equal 0
  1. 判定するために should を使います。Object.prototype を拡張して判定文をかけるようにしてくれていますね。
  2. Spec するモジュールを require して持ってきます。こんかいは foo
  3. describe -> it -> [ASSERTION] の構造で SPEC を書きます。

実装

さて、これを実現できそうなモジュールを作ります。失敗してもいいです。

sample.coffee
foo = (num = 0) -> return num * -1
module.exports = foo

環境構築

さて、spec でテストしたいのですが以下のものが必要になります。

$ npm init -y
$ npm i -D coffee-script gulp gulp-mocha should

mocha ってのは describe や it の構造化やテストの成否を拾ってくれるライブラリだと思います。

gulp 書きます。

gulpfile.coffee
gulp = require "gulp"
mocha = require "glup-mocha"

gulp.task "test", () ->
  gulp.src ['spec/*.coffee']
    .pipe mocha {reporter: 'spec'}

これで spec 内の spec が動きます。.coffee であっても動いてくれます。
やってみましょう。

$ gulp test
[15:11:15] Requiring external module coffee-script/register
[15:11:16] Using gulpfile ~/Works/0_/mocccha/gulpfile.coffee
[15:11:16] Starting 'test'...


  foo()
    ✓ は引数ありなら正負を逆にした値を返す
    ✓ は0なら0を返す
    ✓ は引数なしなら0を返す


  3 passing (12ms)

[15:11:16] Finished 'test' after 129 ms

できました

まとめ

  • まずshould 拡張して、引っ張ってきたテストとなるモジュールを使って、describe>it>[ASSERTION] 構成でテストを書いてしまう。
  • 適切なモジュールを作る。
  • 環境を作って、gulpfile.coffee を書く。

簡単でよかった。

3
4
0

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
3
4