Jasmine でテストする

2012年10月21日 01:19

Jasmine は、RSpec ライクな JavaScript の BDD テストフレームワーク。
スタンドアローン版、gem 版、node.js 版(jasmine-node)とあり、
今回は gem 版を使ってみた。

インストール

gem install jasmine

初期化

jasmine init

必要なファイルが書き出される。

Spec ファイルの編集

デフォルトでは spec/javascripts 以下に格納する。

describe("Hoge", function() {

    var hoge;

    // it の前に実行される
    beforeEach(function() {
        hoge = new Hoge();
    });

    // it の後に実行される
    afterEach(function() {
        hoge = null;
    });

    it("和を返す", function() { 
        expect(hoge.add(1, 1)).toEqual(2);
    });

    it("合計を計算する", function() { 
        hoge.var1 = 4;
        hoge.var2 = 1;
        hoge.var3 = 3;
        expect(hoge.sum()).toEqual(8);
    });
});

Jasmine の Matchers は下記を参照。
https://github.com/pivotal/jasmine/wiki/Matchers

カスタム Matcher を作りたい場合は、
spec/javascripts/support/SpecHelper.js に定義を追加すればいい。

jasmine.yml の編集

public/javascirpt/jasmine.yml を編集する。
jasmine.yml は、テスト実行時に読み込むファイル類の設定ファイルで
Spec ファイルの格納ディレクトリや元のソースファイルなどの構成を
デフォルトから変えたい場合はここに定義する。

# src_files
#
# Return an array of filepaths relative to src_dir to include before jasmine specs.
# Default: []
#
# EXAMPLE:
#
# src_files:
#   - lib/source1.js
#   - lib/source2.js
#   - dist/**/*.js
#
src_files:
    - src/Hoge.js

# stylesheets
#
# Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
# Default: []
#
# EXAMPLE:
#
# stylesheets:
#   - css/style.css
#   - stylesheets/*.css
#
stylesheets:

# helpers
#
# Return an array of filepaths relative to spec_dir to include before jasmine specs.
# Default: ["helpers/**/*.js"]
#
# EXAMPLE:
#
# helpers:
#   - helpers/**/*.js
#
helpers:

# spec_files
#
#  Return an array of filepaths relative to spec_dir to include.
# Default: ["**/*[sS]pec.js"]
#
# EXAMPLE:
#
# spec_files:
#   - **/*[sS]pec.js
#
spec_files:

# src_dir
#
# Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
# Default: project root
#
# EXAMPLE:
#
# src_dir: public
#
src_dir:

# spec_dir
#
# Spec directory path. Your spec_files must be returned relative to this path.
# Default: spec/javascripts
#
# EXAMPLE:
#
# spec_dir: spec/javascripts
#
spec_dir:

テストの実行

rake jasmine

プロジェクトのルートで上記コマンドを実行させると、
WEBrick が起動するので、ブラウザに「http://localhost:8888/」でアクセスする。

jasmineの実行結果

コマンドラインでのテストの実行

rake jasmine:ci

とすると、ブラウザ(Firefox)が立ち上がり、結果を表示して自動的に閉じる。
(これ、Chrome にしたいけど、ブラウザ変更の仕方がわからない…。)

スタンドアローン版、jasmine-node も試してみたけど、
テストのトリガーのタイミング(スタンドアローンはブラウザ、jasmine-node はコマンド、
gem は両方)が違うだけで jasmine.yml の設定などは同じなので、
ケースバイケースで使い分ければいいんではないかと思う。

参考サイト
今回は、こちらのサイトを参考にさせて頂きました。

カテゴリー: programming タグ:

コメントはまだありません

No comments yet.

TrackBack URL

Leave a comment