2013-05-26 1 views
0

여러 메소드를 하나씩 테스트하고 싶습니다. 하나의 메소드 출력을 다음 메소드로 전달해야합니다.nodeunit을 사용한 비동기 테스트 케이스

예 : 추가 및 삭제라는 두 가지 테스트 방법이 있습니다. add 메소드의 onsuccess는 추가 된 객체 (id 포함)를 반환합니다. 생성 된 객체가 삭제되도록 메소드를 삭제하기 위해 전달하려는 동일한 객체.

exports.add = function(test) { 
    nodemanager.add({ 
     name : 'my name' 
    }, function(node) { 
     //this is onsuccess callback. 
     test.ok(node && node.id, 'Failed to get added node\'s info'); 
     test.done(); 
    }); 
} 

exports.del = function(test) { 
    //Here i need to pass node object returned from onsuccess on add method. 
    nodemanager.del(node, function(node) { 
     test.ok(node, 'Deleted node is null'); 
     test.done() 
    }); 
} 

두 가지 기능 외부에서 노드 객체를 정의하고 두 방법 모두에서 액세스를 정의하는 것이 하나의 방법입니다.

이것이 올바른 방법인지 궁금한 점이 있거나 더 나은 접근 방법입니다.

답변

0

서로 다른 테스트를 격리하는 것이 일반적입니다. 사용자가 임의의 순서에 의존하지 않도록 테스트를 무작위로 실행하는 테스트 제품군이 있습니다.

두 번째 테스트에서 추가 된 노드를 삭제할 수 있는지 확인하면이 요소를 사용할 수 있어야합니다. 이 같은 아마 뭔가 : 물론

exports.add = function(test) { 
    nodemanager.add({ 
     name : 'my name' 
    }, function(node) { 
     test.ok(node && node.id, 'Failed to get added node\'s info'); 
     test.done(); 
    }); 
} 

exports.del = function(test) { 
    nodemanager.add({ 
     name : 'my name' 
    }, function(addedNode) { 
     nodemanager.del(addedNode, function(deletedNode) { 
      test.ok(deletedNode, 'Deleted node is null'); 
      test.done() 
     }); 
    }); 
} 

이 솔루션은 또 다른 문제가있다 : 당신의 델 테스트도 실패합니다 나누기 nodemanager.add합니다. 그러나 여기서 추가 동작을 조롱하는 것이 어렵다면 허용되는 것 같습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 del, add onsuccess를 호출하는 아이디어를 좋아한다. (우리는 테스트 케이스 체인을 추가하고 다른 테스트 케이스의 onsuccess를 호출 할 수있다.) –

+0

이 질문에 대한 답변입니까, 아니면 명확하지 않은 것이 있습니까? –

+0

그래, 내 질문에 대답하지만 내가 볼 수있는 유일한 문제는 내가 추가 할 삭제를위한 하나의 테스트 케이스를 만들어야한다는 것입니다. 나는 2 개의 분리 된 방법을 시험하는 2 개의 분리 된 시험 경우를 만들고 싶었다. 어쨌든 나는 네가 말한대로 할거야. 감사. –

0

현재이 노드 단위 인 https://github.com/caolan/nodeunit을 사용중인 경우 작성자의 다른 프로젝트 인 Async (https://github.com/caolan/async)를 확실히 확인했다고 가정합니다. 나는 Waterfall 함수가 당신이 찾고있는 것이라고 생각한다. 나는 비슷한 대답을 찾고 있었는데, 그것은이 페이지로 안내해주었습니다. 그래서 그것을 시도하고 어떻게되는지 알려줄 것입니다.

관련 문제