Help us understand the problem. What is going on with this article?

mocha における describe it before beforeEach after afterEach の実行順序

More than 1 year has passed since last update.

はじめに

この記事について

Javascript のテストフレームワーク mocha における describe it before beforeEach after afterEach の実行順序について調べてみました。

環境

  • Windows 7 Professional x86
  • mocha 5.0.1

結果

5行で

  • describe は上から順番に実行される
  • it は上から順番に実行される
  • beforeEach, afterEach は 各 it の前後 で実行される
  • before は describe の最初に一度だけ 実行される
  • after は describe の最後に一度だけ 実行される

実行結果

$ mocha test.js
describe(1)-top
describe(1)-bottom
describe(2)-top
describe(2)-bottom

  DESCRIBE-1
describe(1)-before
describe(1)-beforeEach
describe(1)-it(1)
    √ テスト1
describe(1)-afterEach
describe(1)-beforeEach
describe(1)-it(2)
    √ テスト2
describe(1)-afterEach
describe(1)-after

  DESCRIBE-2
describe(2)-before
describe(2)-beforeEach
describe(2)-it(1)
    √ テスト1
describe(2)-afterEach
describe(2)-beforeEach
describe(2)-it(2)
    √ テスト2
describe(2)-afterEach
describe(2)-after

実験で書いたテストコード

describe('DESCRIBE-1', function () {
    console.log('describe(1)-top');

    before(function(){
        console.log('describe(1)-before');
    });

    beforeEach(function(){
        console.log('describe(1)-beforeEach');
    });

    after(function(){
        console.log('describe(1)-after');
    });

    afterEach(function(){
        console.log('describe(1)-afterEach');
    });

    it('テスト1', function(){
        console.log('describe(1)-it(1)');
    });

    it('テスト2', function(){
        console.log('describe(1)-it(2)');
    });

    console.log('describe(1)-bottom');
});

describe('DESCRIBE-2', function () {
    console.log('describe(2)-top');

    before(function(){
        console.log('describe(2)-before');
    });

    beforeEach(function(){
        console.log('describe(2)-beforeEach');
    });

    after(function(){
        console.log('describe(2)-after');
    });

    afterEach(function(){
        console.log('describe(2)-afterEach');
    });

    it('テスト1', function(){
        console.log('describe(2)-it(1)');
    });

    it('テスト2', function(){
        console.log('describe(2)-it(2)');
    });

    console.log('describe(2)-bottom');
});
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away