2016-06-18 1 views
2

편집 :이 질문에 대한 답변을 얻었으나 새 스레드를 열지 않으려는 또 다른 유사한 질문이 있습니다.특정 테스트에서만 모카의 'After'코드를 실행하는 방법은 무엇입니까?

저는 프로젝트를 테스트하기 위해 모카 (Mocha)와 차이 (Chai)를 사용하고 있습니다.

내 코드의 일부로 새 사용자를 만들고 DB에 저장합니다 (따라서 테스트 사용자는 앱에서 다양한 방법을 수행 할 수 있습니다).

일반적으로 모든 테스트가 끝나면 "AfterEach"훅을 사용하여 DB에서 사용자를 삭제하는 코드 블록을 실행하고 싶습니다.

내 문제는 사용자를 만들지 않는 (예 : '가입하지 않고 로그인 해보십시오') 1 테스트 (이후에 더 많을 수 있음)가 발생하여 내 AfterEach 코드가 오류를받을 수 있습니다. 존재하지 않는 것을 삭제하지 마라).

모카는 일부 테스트에서 'AfterEach'를 비활성화하는 방법을 제공합니까? 또는 내 문제에 대한 다른 해결책.

편집 : 추가 된 질문 : 내 AfterEach 후크 약속을 반환하는 비동기 메서드가 관련이 있습니다. Mocha 문서에서 콜백과 함께 작동하는 비동기 후크에 대한 예제 만 보았습니다. 어떻게 약속을 반환하는 afterEach 후크를 사용하기로하고

답변

4

중첩 할 수 있습니다 describe 블록, 그래서 당신이 할 수있는 그룹 사용자 상호 작용 테스트도 그룹 "사용자와"와 "사용자없이"테스트 :

describe('user interaction',() => { 

    describe('with user in database',() => { 
    // these will run only for the tests in this `describe` block: 
    beforeEach(() => createUser(...)); 
    afterEach (() => deleteUser(...)); 

    it(...); 
    }); 

    describe('without user in database',() => { 
    it(...); 
    }); 

}); 
+0

감사! 다른 질문이 있습니다. 내 afterEach 후크 약속을 반환하는 비동기 메서드가 포함됩니다. Mocha 문서에서 콜백과 함께 작동하는 비동기 후크에 대한 예제 만 보았습니다. 약속을 반환하는 afterEach 후크를 어떻게 사용해야합니까? – Akabutz

+0

모카에는 약속 보증 기능이 내장되어 있으므로 테스트 또는 후크 중 하나에서 돌아 오면 모카는 문제가 해결 될 때까지 기다렸다가 계속 진행합니다. – robertklep

관련 문제