2014-12-02 4 views
0

나는과 같이 배열에 모카 테스트 루프를 실행 해요 : 나는 그것을 로그 아웃 할 때실행 모카 테스트 루프는 동 기적으로

it('each should have permissions defined for each role', function(done) { 
    async.forEach(_permissions, function(permission, callback) { 
     log.debug(permission.permissions.should.be.an.instanceOf(Array).and.not.be.empty); 
     callback(permission.permissions.should.be.an.instanceOf(Array).and.not.be.empty); 
    }, 
    function(result) { 
     log.debug(result); 
     done(); 
    }); 
}); 

, 그것은 내가 done() 콜백을 사용하고 있습니다 비록 비동기 적으로 실행되어야 나타납니다 . 이 경우인가요? 내 테스트가 여전히 성공적으로 수행되고 있습니까? 아니면 첫 번째 테스트 만 실행 한 다음 성공적인 결과를 반환합니까?

[Tue Dec 02 2014 09:24:07 GMT-0800 (PST)] DEBUG { obj: [ 'permissions!' ], params: { operator: 'to be empty' }, negate: false } 
    ✓ each should have permissions defined for each role // <- here's the test result 
[Tue Dec 02 2014 09:24:07 GMT-0800 (PST)] DEBUG { obj: [ 'permissions!' ], params: { operator: 'to be empty' }, negate: false } 
[Tue Dec 02 2014 09:24:07 GMT-0800 (PST)] DEBUG { obj: [ 'permissions!' ], params: { operator: 'to be empty' }, negate: false } 
[Tue Dec 02 2014 09:24:07 GMT-0800 (PST)] DEBUG { obj: [ 'permissions!' ], params: { operator: 'to be empty' }, negate: false } 

답변

1

사용 eachSeries이 과거에 너무 저를 얻었다 :

다음은 콘솔 출력입니다. forEach은 병렬 버전입니다. 그래서 같은

사용 :

it('each should have permissions defined for each role', function(done) { 
    async.eachSeries(_permissions, function(permission, callback) { 
     permission.permissions.should.be.an.instanceOf(Array).and.not.be.empty; 
     callback(); 
    }, 
    function(err) { 
     done(); 
    }); 
}); 
+0

DOH! Awesome;) – brandonscript

+0

실제로'eachSeries'입니까? 그리고 그것을 사용할 때 이제는 테스트 중 하나만 실행됩니다. – brandonscript

+0

아, 약간 수정해야합니다. 콜백에 있지 않아도되는 어설 션입니다. – brandonscript

관련 문제