2011ǯ12��19��

Node.js�Υƥ��ƥ��󥰥ե졼������Mocha�ס����ԡ�

Mocha�Υ��塼�ȥꥢ���˱�ä�Mocha���ɤߡ��⤫�ˤ�ȤäƤߤޤ�����

Ĺ���Τ����ԡ����Ԥ����������ˤ��ޤ���

���Ѥ���Mocha�ΥС�������0.3.6�Ǥ���



�Ϥ����

���Υ���ȥ꡼�Τ���˽񤤤�����ץ륳���ɤϰʲ����֤��Ƥ����ޤ���

https://github.com/ryu22e/mocha-example

Features

Google�����ȼ���������������ޤ�������ä�Ŭ�ڤ���������Ф���Ŧ���ꤤ���ޤ���

  • browser support�ʥ֥饦�����ݡ��ȡ�
  • simple async support�ʥ���ץ����Ʊ�����ݡ��ȡ�
  • proper exit status for CI support etc��CI���ݡ������Τ����Ŭ�ڤʽ�λ���ơ�������
  • auto-detects and disables coloring for non-ttys����ttys�Τ���μ�ư���Фȥ��顼���̵����
  • maps uncaught exceptions to the correct test case����­����ʤ��㳰���������ƥ��ȥ������˥ޥåԥ󥰡�
  • async test timeout support����Ʊ���ƥ��ȤΥ����ॢ���ȤΥ��ݡ��ȡ�
  • test-specific timeouts������Υƥ��ȤΥ����ॢ���ȡ�
  • growl notification support��Growl���ݡ��ȡ�
  • reports test durations�ʥƥ��ȴ��֤Υ�ݡ��ȡ�
  • highlights slow tests���٤��ƥ��ȤΥϥ��饤��ɽ����
  • file watcher support�ʥե�����ƻ�Υ��ݡ��ȡ�
  • global variable leak detection�ʥ������Х��ѿ��꡼���θ��С�
  • optionally run tests that match a regexp�ʥ��ץ���������ɽ���˰��פ���ƥ��Ȥμ¹ԡ�
  • auto-exit to prevent ��hanging�� with an active loop��"�ϥ�"�ɻߤΤ���Υ����ƥ��֥롼�׼�ư��λ��
  • easily meta-generate suites & test-cases�ʥƥ��ȥ������Ȥ�ƥ��ȥ��������ñ�˥᥿������
  • mocha.opts file support��mocha.opts�ե�����Υ��ݡ��ȡ�
  • mocha-debug(1) for node debugger support��Node�ǥХå����Ѥ�mocha-debug(1) �Υ��ݡ��ȡ�
  • detects multiple calls to done()��done()��ʣ���ƤӽФ��θ��С�
  • use any assertion library you want�ʹ����ʥ����������饤�֥���Ȥ����
  • extensible reporting, bundled with 9+ reporters�ʳ�ĥ��ǽ�ʥ�ݡ��ȡ�������Υ�ݡ��Ȥ�Х�ɥ��
  • extensible test DSLs or ��interfaces�ɡʳ�ĥ��ǽ�ʥƥ���DSL�ޤ���"���󥿡��ե�����"��
  • before, after, before each, after each hooks��befor, after, before each �ʤɤΥեå��᥽�åɡ�
  • coffee-script support��cofee-script�Υ��ݡ��ȡ�
  • TextMate bundle��TextMate��Х�ɥ��
  • and more!��¾�ˤ�ޤ�����衪��

Installation

�������ä˽񤯤��Ȥ��ʤ��Ǥ������̤�npm�ǥ��󥹥ȡ��뤷�ޤ���

npm install -g mocha

Assertions

Mocha�ǤϹ����ʥ����������饤�֥���Ȥ����Ȥ��Ǥ��ޤ���

�ܥ���ȥ�Υ���ץ륳���ɤǤ�Mocha�Υ��塼�ȥꥢ���˽��ä�should.js��Ȥ��ޤ���

Synchronous code

����ʥ����ɤ����ä��Ȥ���

exports.add = function(a, b) { return a + b; }

�ƥ��ȤϤ����񤱤ޤ���

var example = require('../lib/example.js')

describe('example - Synchronous code', function(){
  describe('#add()', function(){
    it('should return \'a + b\' when the values are \'a\' and \'b\'.', function(){
      example.add(1, 2).should.equal(3);
      example.add(2, 3).should.equal(5);
    })
  })
})

Asynchronous code

��̤�������ޤǻ��֤������륳���ɤΥƥ��Ȥξ�硢

exports.waitAndAdd = function(a, b) {
  var ev = new EventEmitter(); 
  setTimeout(function(){
    ev.emit('sum', a + b); 
  }, 1000);
  return ev; 
}

done()���ƤФ��ޤ��Ե����ơ�done()�ƤӽФ��θ�˼��Υƥ��Ȥ��¹Ԥ���ޤ���

var example = require('../lib/example.js');

describe('example - Asynchronous code', function(){
  describe('#waitAndAdd()', function(){
    it('should return \'a + b\' when the values are \'a\' and \'b\'.', function(done){
      var ev = example.waitAndAdd(1, 2);
      ev.on('sum', function(sum) {
        sum.should.equal(3);
        done();
      });
    })
  })
})

�ƥ��ȼ¹����˸ƤФ��եå��᥽�åɤ�񤱤ޤ���

describe('example - hooks', function(){
  var beforeCount = 0,
      beforeEachCount = 0,
      afterEachCount = 0,
      afterCount = 0;

  before(function(done) {
    // ���ƥ��ȼ¹����ˣ���ƤФ�롣
    beforeCount++;
    done();
  })

  beforeEach(function(done){
    // �ƥƥ��ȼ¹��������ƤФ�롣
    beforeEachCount++;
    done();
  })

  afterEach(function(done) {
    // �ƥƥ��ȼ¹Ը�����ƤФ�롣
    afterEachCount++;
    done();
  });

  after(function(done) {
    // ���ƥ��ȼ¹Ը�ˣ���ƤФ�롣
    afterCount++;
    afterCount.should.equal(1);
    done();
  })

  describe('test for hook methods.', function(){
    it('test1', function(){
      beforeCount.should.equal(1);
      beforeEachCount.should.equal(1);
      afterEachCount.should.equal(0);
    })
    it('test2', function(){
      beforeCount.should.equal(1);
      beforeEachCount.should.equal(2);
      afterEachCount.should.equal(1);
    })
    it('test3', function(){
      beforeCount.should.equal(1);
      beforeEachCount.should.equal(3);
      afterEachCount.should.equal(2);
    })
  })
})

Pending tests

�ޤ��񤤤Ƥ��ʤ����ɸ�ǽ񤯤Ĥ��Υƥ��Ȥϡ������񤤤Ƥ����ޤ���

describe('example - pending test', function(){
  describe('#minus()', function(){
    it('should return \'a - b\' when the values are \'a\' and \'b\'.')
  })
})

mocha��¹Ԥ���ȡ�it�˽񤤤���should return 'a - b' when the values are 'a' and 'b'.�פ����̾�ˤ���Ϥ���ޤ���

Test duration

�ƥ��ȷ�̤����˸��䤹����

���ץ����� --reporter spec ï¿½ï¿½ï¿½Õ¤ï¿½ï¿½Æ¼Â¹Ô¤ï¿½ï¿½ï¿½ï¿½ï¿½Ì¤Ï°Ê²ï¿½ï¿½Î¤è¤¦ï¿½Ë¤Ê¤ï¿½Þ¤ï¿½ï¿½ï¿½

mocha

�ֻ��ǡ�(1003ms)�פ�ɽ������Ƥ���Τϡ��¹Դ�λ�ޤǤ˻��֤������äƤ���ƥ��ȡ��Ļ��ǡ�should return 'a - b' when the values are 'a' and 'b'.�פ�ɽ������Ƥ���Τϡ����Ҥ�Pending tests�Ǥ���

mocha(1)

���ץ����ϰʲ��ΤȤ���Ǥ���

-w, —watch

�ƥ��Ȥ��ѹ������ޤǤ��ä��Ե����ơ��ѹ����Τ���ȥƥ��Ȥ�¹Ԥ��Ƥ���ޤ���

�¹Ի�����¸�ߤ���ƥ��ȤΤߤ��ƻ��оݤǡ���������ä��ƥ��Ȥ�ƻ뤹��ˤϺƼ¹Ԥ���ɬ�פ�����褦�Ǥ�����̯�˻Ȥ��Ť餤��

—globals <names> 

�������Х��ѿ�̾���Ϥ��ޤ���ʣ�����ꤹ����ϥ���ޤǶ��ڤ�ޤ���

�㤨�С���--globals myname,global1Called�פ��դ��ưʲ�����ĤΥƥ��Ȥ�¹Ԥ���ȡ��ƥ��ȥ����ɤ����myname, global1Called�Ȥ�����ĤΥ������Х��ѿ��򰷤��ޤ���

describe('example - global option 1', function(){
  before(function(done) {
    myname = 'ryu22e';
    global1Called = true;
    done();
  });
  describe('test for global variables.', function(){
    it('myname is \'ryu22e\'.', function(){
      myname.should.equal('ryu22e');
      global1Called.should.equal(true);
    })
  })
})
describe('example - global option 2', function(){
  describe('test for global variables.', function(){
    it('myname is \'ryu22e\'.', function(){
      myname.should.equal('ryu22e');
      global1Called.should.equal(true);
    })
  })
})

���ޤ������Ӥ�ʬ����ʤ��ΤǤ������ƥ���A��ѥ������饰�����Х��ѿ��ե饰��true�ˤ��ơ��ƥ���B�ϥ������Х��ѿ��ե饰��true�Ǥʤ��ȼ¹Ԥ��ʤ����Ȥ����Ȥ������Ǥ���褦�ʵ�����

—ignore-leaks

�ƥ��ȥ����ɤ�--globals�ǻ��ꤵ��Ƥ��ʤ��������Х��ѿ������äƤ⥨�顼���Фʤ��褦�ˤʤ�ޤ���

-r, —require <name>

�ƥ��ȥ����ɤ����Ѥ���⥸�塼��̾����ꤹ��ȡ��ƥ��ȥ��������require��񤫤ʤ��Ƥ�⥸�塼��򰷤��ޤ���

-u, —ui <name>

bdd, tdd, exports�β��줫���顢�ƥ��ȥ����ɤν��������٤ޤ���

�ǥե���Ȥ�bdd��

-R, —reporter <name>

�ƥ��ȼ¹Է�̤�ɽ�����������٤ޤ���

�ǥե���Ȥ�dot��

-t, —timeout <ms>

�ƥ��ȥ������������ॢ���Ȥ�����֤����Ǥ��ޤ���

�ǥե���Ȥ�2000�ߥ��á�

-s, —slow <ms>

���٤��ƥ��ȡפ�Ƚ�Ǥ�����ˤʤ���֤����Ǥ��ޤ���

�¹Խ�λ�ˤ����ä����֤������ǻ��ꤷ�����֤���٤����ˡ������ƥ��Ȥ��ϥ��饤��ɽ������ޤ���

�ǥե���Ȥ�75�ߥ��á�

-g, —grep <pattern>

pattern�˻��ꤷ������ɽ���Ȱ��פ���describe��it���񤫤�Ƥ���ƥ��ȤΤߤ��¹Ԥ���ޤ���

mocha-debug(1)

�ƥ��ȤΥ��ƥå׼¹Ԥ��Ǥ���餷�����ɡ��ܺ٤�̤Ĵ����

Interfaces

Mocha�Ǥϥƥ��Ȥν�����bdd, tdd, exports�β��줫�������֤��Ȥ��Ǥ��ޤ���

�����ζ�����Ͼ�ά��Mocha�Υ��塼�ȥꥢ���򸫤Ƥ��������ˡ�


³����������



ryu22e at 23:16��������(0)���ȥ�å��Хå�(0)���ץ������ | Javascript 

�ȥ�å��Хå�URL

�����Ȥ���

̾��
 
  ³¨Ê¸»ú
 
 
<% for ( var i = 0; i < 7; i++ ) { %> <% } %>
<%= wdays[i] %>
<% for ( var i = 0; i < cal.length; i++ ) { %> <% for ( var j = 0; j < cal[i].length; j++) { %> <% } %> <% } %>
0) { %> id="calendar-1246260-day-<%= cal[i][j]%>"<% } %>><%= cal[i][j] %>
Profile

ryu22e

�ǿ�����
Recent Comments
<%==comments[n].author%>
<% } %>
Categories