2010-06-14 3 views
9

저는 ASP.NET 용 Mocking 프레임 워크를 여러 차례보고 있었으며 Microsoft Moles를 방문했습니다. 이것은 Microsoft Research 팀의 일원으로 보이며 Moq와 같은 다른 성숙한 Mocking 프레임 워크보다 Moles를 선택한 사람이 있는지 궁금해하고 있습니다.왜 조롱 프레임 워크로 Moles를 선택하겠습니까?

답변

15

실제로 동일한 테스트 프로젝트에서 Moq 몰을 사용합니다. 두 가지 모두 강점을 가지고 있으며 적절한 경우 각각을 사용합니다. 일반적으로 확인을 통해 표준 AAA 테스트를 수행하기 위해 Moq을 사용하고, 확장 메소드 호출과 같은 다른 방법으로는 움직일 수없는 것들에 대해 Moles를 '큰 총'으로 사용합니다.

각 테스트는 조롱 설정이 테스트마다 크게 다를지라도 가능한 한 간단하고 합리적입니다.

+2

+1 두 가지를 동시에 사용할 수있는 중요한 포인트 - '첫 번째 리조트의 조소'를 신중하게 선택하면됩니다. –

+1

당신의 워크 플로우에 대한 블로그 포스트의 예를 보면 좋을까요? 나는 TDD에 대해 약간 자연스럽지 않다는 것을 안다. – roundcrisis

+1

당신은 그것이 합당한 예를 든다. 나는 지금 당장은 없다. 그러나 내가 가지고있는 어떤 코드라도 둘러 볼 수 있는지 살펴볼 것이다. – ZeroBugBounce

3

몰 (Mole)은 Moq 및/또는 RhinoMocks의 스위트 스팟 외부에서 일련의 기능을 제공한다는 점에서 TypeMock과 더 자주 비교/대조됩니다.

당신이 스스로 선택해야 할 주요 질문은 당신의 테스트를 상대적으로 낮은 기술로 유지하고 더 높은 수준의 기술적 인 속임수에 참여시키고 싶은지 여부입니다. 이것은 주로 당신이하고있는 일에 의해 좌우 될 것입니다 - ASP.NET과 MVC가 아닌 태그가 붙어있어서 관련성이 있음을 나타냅니다.

멋진 개요를 보려면 this Dimecasts.net video을보십시오.

+0

ASP.NET MVC를 사용하고 있습니다. 태그를 업데이트했습니다. – user300981

+0

@ bobsmith123 :이 경우, 나는 개인적으로 좀 더 헤비급 조롱 프레임 워크를 사용하는 이유를 보지 않을 것입니다 - 필자는 필요할 때까지 그러한 포대를 당기지 않을 것입니다. Pex를 사용하는 것은 별도의 결정이지만, 조롱 프레임 워크 선택과 독립적으로 만들어야합니다. 왜 당신은 Pex로 q에 태그를 붙인 다음 그것을 참조하지 않았습니까? 사용하는 데 관심이 있습니까?/땅콩 버터와 젤리/몰에서 분리 할 수 ​​없다고 생각합니까? –

5

몰은 Pex의 화이트 박스 분석과 함께 효율적으로 작동하도록 설계되었습니다. 다른 모의 프레임 워크는 대개 많은 오버 헤드를 초래합니다.

Moles는 모든 .NET 메서드를 대리자로 바꾸는 간단한 가치 제안을 제공합니다. 의도적으로 Moles는 다른 프레임 워크처럼 '검증'을 표현하는 API를 제공하지 않습니다. 이 결정이 당신에게 적합한 지 아닌지는 당신에게 달려 있습니다.

하드 코딩 된 정적 메서드 나 내부 생성자가있는 밀폐 된 형식에 의존하는 (기존) 코드를 처리해야하는 경우 Moles는 이러한 경우를 처리하는 데 도움을 줄 수 있습니다.

코드가 잘 구성되어 있고 코드가 잘 구성되어 있다면 Moles는 프로파일 러와 함께 사용할 수있는 인터페이스 구현과 같은 슬림 스텁도 생성합니다.

+0

+1 Moles에서 메서드가 호출 된 횟수를 확인하려면 자체 카운터를 넣고 대리자가 원래 메서드를 호출하도록해야합니다 (원할 경우). 'Times.Once' 및 일부 프레임 워크 (Moq와 같은)에서 제공하는 다른 메소드와 대조하십시오. – Pat