Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

node.jsのテスティングフレームワークのjasmine-nodeの環境を作る #358

Closed
Torokun opened this issue Oct 23, 2013 · 6 comments
Assignees
Milestone

Comments

@Torokun
Copy link
Member

Torokun commented Oct 23, 2013

node.jsのテスティングフレームワークのjasmine-nodeの環境を作る

@ghost ghost assigned Torokun Oct 23, 2013
@eiel
Copy link
Member

eiel commented Oct 23, 2013

最近、mocha のほうが気になってる。 konacha は Rails プラグインやて < 俺

@Torokun
Copy link
Member Author

Torokun commented Oct 23, 2013

残念ながら、先にjasmine-nodeで動くテストコードができてしまってるんだ・・・。

@Torokun
Copy link
Member Author

Torokun commented Oct 23, 2013

その前にMBAにnode.jsがインストールされてないので、 http://106n.net/toro/blog/?p=879 を参考にインストールした。

@Torokun
Copy link
Member Author

Torokun commented Oct 23, 2013

jasmine-nodeは https://github.com/mhevery/jasmine-node にある。
インストールは簡単。

$ npm install jasmine-node -g

@Torokun
Copy link
Member Author

Torokun commented Oct 23, 2013

テストコードは末尾にspec.jsという名前をファイル名をつけていればよい
ディレクトリ構造は下のような感じにしてみた
work
├src ソースコードを置く場所
│└person.js
└spec テストコードを置く場所
 └person.spec.js

person.jsの中身

(function() {
    function Person() {
        this.name = '';
        this.age = 0;
    };
    Person.prototype.getName = function() {
        return this.name;
    };
    Person.prototype.setName = function(name) {
        this.name = name;
    };
    Person.prototype.getAge = function() {
        return this.age;
    };
    Person.prototype.setAge = function(age) {
        this.age = age;
    };
    exports.Person = Person;
})();

person.spec.jsの中身

(function() {
    // テストするソースの読み込み
    var PersonJs = require('../src/person');
    // テストするクラス
    var Person = PersonJs.Person;
    // テストコード
    describe('Person Class', function(){
        it('exist Person Class', function() {
            expect(Person).toBeDefined();
        });
        it('create Person Object', function() {
            var person = new Person();
            expect(person).toNotEqual(null);
        });
        it('init Person Object', function() {
            var person = new Person();
            var name = person.getName();
            expect(name).toEqual('');
            var age = person.getAge();
            expect(age).toEqual(0);
        });
        it('setter test', function() {
            var person = new Person();
            var name = 'Toro_kun';
            var age = 0x20;
            person.setName(name);
            expect(person.getName()).toEqual(name);
            person.setAge(age);
            expect(person.getAge()).toEqual(age);
        });
    });
})();

実行結果

$ jasmine-node spec
....
Finished in 0.01 seconds
4 tests, 6 assertions, 0 failures, 0 skipped

テストコードのディレクトリを指定すればそのディレクトリ内の*spec.jsに該当するファイルがテストコードとしてすべて実行されます。もちろんテストコードファイルを指定しての実行も可能

@Torokun
Copy link
Member Author

Torokun commented Oct 27, 2013

マージされたのでクローズ

@Torokun Torokun closed this as completed Oct 27, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants