2017-10-22 4 views
0

JestJSを初めて使用し、同期コードをテストしようとしています。私はこのコードを追加するときJestJSで同期コードをテストすると非同期動作が発生する

bin = new Compiler().compile('{int a = 42;}'); 

test('Integer constant declaration', function() { 
    expect(bin.dumpVariables()).toBe("[int const a = 42]\n"); 
}); 

しかし:以下のテストは大丈夫合格

bin = new Compiler().compile('{bool b;}'); 

test('Another test', function() { ... } 

binはすでにそれの後に来るの割り当てから新たな価値を持っているので...最初のテストは失敗します。何故ですか?私のコードは完全に同期しているので、最初のテストが成功すると予想され、その後はそれに続くコードの影響が予想されます。

答えて

0

原因binは両方のテストの対象になります。しかし、主な問題は、testdescribe2、itブロックのいずれかの外に書き込まれたすべてのコードが即座に呼び出されることです。

test('testname', testFunction) 

これはテストが名前と機能を備えたスイートをテストするために追加されたことが、これはtestFunctionがすぐに呼び出されることを意味するものではありません:test呼び出しはどのようなものか見てましょう。このように動作すれば、beforeEachブロックは機能しません。最初に、テストスイートはすべて異なるtest,describe,itコールを収集し、それを実行します。テストの外側の上部スコープに変数を作成すると、最後に割り当てられた値になります。あなたの場合{bool b;}

関連する問題