mochaを使ってpomeloプロジェクトのユニットテストを作成します.
1982 ワード
どうやってインストールするかは省略します.これは比較的簡単です.使い方も簡単で、インターネットの教程も多いです.これは自分でユニットテストを書く時に発生した問題をまとめただけです.
ユニットテストを書き始めたばかりの時、変な問題がありました.いつも自分のほしい効果に及ばないです.根本はやはりmochaの実行タイミングについてはよく分かりません.ここで実行タイミングをまとめた資料は以下の通りです.
describe内のタイミング
シンプルケース
ルール1:describe内の地itの非同期部分は、それらの定義された順序で実行され、トリガされたコールバックの登録順序もitの登録順序に従う.
もしこのようなcaseだったら:
ヤフー
• before
• アフターサービス
• beforeEach
• afterEach
これは比較的によく使われているヤフオクです.私たちはscribeの中のタイミングを変えることができます.しかし、覚えておくと、ヤフオクはdescribeの上にあり、describeと繋がっています.chooksは子describeには役に立たない.
describe間のタイミング
非describe部分
ルール2:describeに包まれない部分の実行順序の優先度が一番高い
並んだdescribe
ルール3:同じレベルのdescribeの実行順序はそれらの定義順序に従う.
入れ子のdescribe
ルール4:外層describeのすべてのitは、入れ子より優先度が高いdescribeを実行します.
締め括りをつける
最後にこの四つの規則をまとめます.
• describe内の地itの非同期部分は、それらの定義された順序で実行され、トリガされたコールバックの登録順序もitの登録順序に従う.
• describeに包まれない部分の実行順序の優先度が一番高いです.
• 同じレベルのdescribeの実行順序はそれらの定義順序に従う.
• 外層describeのすべてのitは、入れ子より優先度が高いdescribeを実行します.
参照先:http://segmentfault.com/a/1190000002448251
ユニットテストを書き始めたばかりの時、変な問題がありました.いつも自分のほしい効果に及ばないです.根本はやはりmochaの実行タイミングについてはよく分かりません.ここで実行タイミングをまとめた資料は以下の通りです.
describe内のタイミング
シンプルケース
describe('work',function(){
it('1',func(){});
it('2',func(){});
....
});
//1、2、3…の順に実行します.ルール1:describe内の地itの非同期部分は、それらの定義された順序で実行され、トリガされたコールバックの登録順序もitの登録順序に従う.
もしこのようなcaseだったら:
describe('work',function(){
{block1}
it('1',func(){});
{block2}
it('2',func(){});
{block3}
....
});
実行順序はblock 1 block 2 block 3 it 2であるべきです.ここで言うと、itは実際のtestcaseに対応するべきです.このtest caseに関するコードは必ずitのフィードバックに入れてください.何か奇妙なエラーが発生しないように注意してください.ヤフー
• before
• アフターサービス
• beforeEach
• afterEach
これは比較的によく使われているヤフオクです.私たちはscribeの中のタイミングを変えることができます.しかし、覚えておくと、ヤフオクはdescribeの上にあり、describeと繋がっています.chooksは子describeには役に立たない.
describe間のタイミング
非describe部分
ルール2:describeに包まれない部分の実行順序の優先度が一番高い
{block1}
describe('1',function(){
...
});
{block2}
describe('2',func(){..});
//実行順block 1,block 2,describe 1,describe 2並んだdescribe
ルール3:同じレベルのdescribeの実行順序はそれらの定義順序に従う.
入れ子のdescribe
describe('parent',func(){
it('1',func(){..});
describe('child1',func(){...});
it('2',func(){...});
describe('child2',func(){..});
});
//実行順はit 1,it 2,child 1,child 2ルール4:外層describeのすべてのitは、入れ子より優先度が高いdescribeを実行します.
締め括りをつける
最後にこの四つの規則をまとめます.
• describe内の地itの非同期部分は、それらの定義された順序で実行され、トリガされたコールバックの登録順序もitの登録順序に従う.
• describeに包まれない部分の実行順序の優先度が一番高いです.
• 同じレベルのdescribeの実行順序はそれらの定義順序に従う.
• 外層describeのすべてのitは、入れ子より優先度が高いdescribeを実行します.
参照先:http://segmentfault.com/a/1190000002448251