2017-10-22 11 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는 두 테스트 범위에 있습니다. 그러나 주된 문제는 test, describe, it 블록 중 하나의 외부에 쓰여진 모든 코드가 즉시 호출된다는 것입니다.

test('testname', testFunction) 

이 테스트는 이름과 기능을 가진 제품군을 테스트하기 위해 추가 의미하지만, 이것은 testFunction 즉시 호출 것을 의미하지 않는다 : 같은 test 전화의 모양을 봐 가지고 있습니다. 이런 식으로 작동한다면 beforeEach 블록이 작동하지 않습니다. 먼저 테스트 스위트는 모든 다른 test, describe, it 호출을 수집 한 다음 실행합니다. 테스트 외부의 상위 범위에 변수를 만들면 마지막에 할당 된 값을 갖게됩니다. 귀하의 경우 {bool b;}