2008-10-01 5 views
4

ADO.NET에는 새로운 것을 사용하여 인스턴스화 할 수없는 악명 높은 DataRow 클래스가 있습니다. 이제 Rhino Mock을 사용하여 조롱 할 필요가 있음을 알게되었습니다.Rhino Mocks : ADO.NET의 DataRow를 모방하는 방법?

누구든지이 문제를 해결할 수있는 아이디어가 있습니까?

답변

11

저는 왜 DataRow를 조롱해야하는지 궁금합니다. 때로는 조롱하는 것을 포기하고 실제 물건을 사용하는 것이 신중할 수 있다는 것을 잊을 수 있습니다. 데이터 행을 전달하는 경우 도우미 메서드로 인스턴스를 만들고이를 모의 값의 반환 값으로 사용할 수 있습니다.

SetupResult.For(someMockClass.GetDataRow(input)).Return(GetReturnRow()); 

public DataRow GetReturnRow() 
{ 
    DataTable table = new DataTable("FakeTable"); 
    DataRow row = table.NewRow(); 
    row.value1 = "someValue"; 
    row.value2 = 234; 

    return row; 
} 

이 상황이 아니라면 내가하는 일을 파악할 수있는 몇 가지 예제 코드가 필요합니다.

+0

제가 작성한 (어색한) ORM에 대한 것입니다. DAO가 내 DBWrapper 객체에 쿼리하여 DataRow를 가져오고 그 객체를 빌드한다는 것을 테스트하고 있습니다. 모의 의사를 사용하는 것이 더 편리 할지라도, 이런 일이해야 할 것 같아요. –

+0

그래, 힘든 일이야. 일반적으로 나는 콘크리트 유형을 모두 사용하는 것을 피하고 대신 인터페이스를 사용한다고 말하고 싶지만,이를 수행하려고 시도하는 것은 이것을 수용하지 않을 것입니다. – Josh

0

내가 뭔가를 조롱 할 수 없을 때 (필자는 Rhino에 비해 MoQ를 선호하지만 그 점 옆에 있음) 나는 코드를 사용해야합니다.

내가 보는 방식에는 두 가지 선택 만 있습니다. 어떤 클래스를 조롱 할 수있는 TypeMock과 같은 우수한 프레임 워크를 지불하거나 조롱을 당하지 않도록 작성된 클래스를 래퍼로 코딩하십시오.

프레임 워크의 슬픈 상태. TDD는 1.1 일 만에 큰 관심사가 아니 었습니다.

1

또한이 경우에는 Typemock 격리기를 사용하여 다른 조롱하는 프레임 워크가 할 수없는 것을 조롱 할 수 있습니다.