2008-11-03 4 views
2

래퍼를 쓰려고하는 OLE COM 개체가 있습니다. TDD를 사용하여 코드를 작성하기로 결정했습니다. 내가 쓰려고하는 것과 더불어 더 나은 방향 감각. 에서 [마] 명령처럼 뭔가를해야만 걸릴 것COM OLE 개체로 TDD를 수행하는 방법은 무엇입니까?

Interface Mapinfo 
    Sub [Do](ByVal cmd As String) 
    Function Eval(ByVal cmd As String) As String 
End Interface 

의 I이 같은 기능이 있으므로 래퍼를 작성하는 것을 시도하고 이제

Mapinfo.Do("OpenTable("""C:\Temp\MyTable.TAB""")") 

다음 사항 COM 객체는이 같은 인터페이스를 가지고 :

Mapinfo.OpenTable("C:\Temp\MyTable.TAB") 

지금은 데 내 가장 큰 문제는, (마다 나는 새로운 테스트 및 I 응용 프로그램이 시작할 때까지 기다리 OLE 개체의 인스턴스를 만들 필요가 코드를 작성하려는 30 초 +), 내 작은 기능을 테스트하고 닫고 OLE 개체를 삭제하고 코드를 변경 한 다음 다시 실행하십시오.

내 질문 : 매번 OLE 응용 프로그램을 시작하지 않고도이 모든 작업을 수행 할 수있는 더 좋은 방법이 있습니까? 나는 모의 물건에 대해 들었지만 실제로 많이 들여다 보지 않았습니다, 그들은 나를 도와 줄 것입니까? 그렇다면 어떻게?

편집 : 이제 Mapinfo에 대한 모의 객체를 만들어야한다는 것을 알았습니다. 제 질문은 어떻게 다른 형식의 문자열을 취할 수있는 모의 객체를 만들 수 있습니까? 래퍼의 코드가 올바른지 어떻게 확인할 수 있습니까?

답변

3

예, 모의 객체가 도움이됩니다. 기본적으로 Mapinfo 인터페이스를 조롱하여 가짜 Mapinfo 객체를 만듭니다 (IMapInfo, btw의 이름을 변경해야 함).

그런 다음 호출 할 호출을 예상하고 반환 할 결과 (적절한 경우)를 알려줍니다. 모의가 예외를 던지는 테스트를 만들거나 실제 객체를 사용하여 호출하기 어려운 다른 작업을 수행 할 수도 있습니다.

두 가지 큰 (무료) .NET 모킹 프레임 워크는 MoQRhino Mocks입니다. Rhino는 더 성숙하고 모의 (mock)을 구성하는 더 많은 방법을 가지고 있습니다. MoQ는 신입 사원으로 Rhino보다 작은 피쳐 세트와 기대치를 설정하는 방법이 적습니다.

개인적으로 저는 신입 사원이 조롱하는 것이 더 좋다고 생각합니다. 상대적으로 이해하기 쉽고, 모든 문서는 현재 릴리스와 관련이 있습니다 (Rhino 튜토리얼을 검색하면 몇 년 전에는 더 이상 적용되지 않는 쓰레기가 생깁니다).

관련 문제