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 ���դ��Ƽ¹Ԥ�����̤ϰʲ��Τ褦�ˤʤ�ޤ���
�ֻ��ǡ�(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�Υ��塼�ȥꥢ���򸫤Ƥ��������ˡ�
³����������