2016-06-21 7 views
0

다음과 같은 오류가 있습니다. "System.Data.SqlClient.SqlDataReaderSmi에 대해 shim을 생성 할 수 없습니다. 형식을 이제 내보낼 수도 있고 어셈블리 (System.Data.4.0.0.0.Fakes)로 볼 수 있습니다. . 내 단위 테스트에서Cannote가 System.Data.SqlClient.SqlDataReaderSmi에 대해 shim을 생성합니다.

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true"> 
    <Assembly Name="System.Data" Version="4.0.0.0"/> 
    <StubGeneration> 
    <Clear/> 
    </StubGeneration> 
    <ShimGeneration> 
    <Clear/> 
    <Remove FullName="System.Data.SqlClient"/> 
    <!--Added Classes--> 
    <Add FullName="System.Data.SqlClient.SqlCommand!"/> 
    <Add FullName="System.Data.SqlClient.SqlConnection!"/> 
    <Add FullName="System.Data.SqlClient.SqlDataRead"/> 
    </ShimGeneration> 
</Fakes> 

나는 그렇게 같은 SqlDataReader를 조롱하고있다 : 나는 내 유닛 테스트에서 페이크를 사용할 필요가 일반적으로

var statReqReader = new ShimSqlDataReader() 
     { 
      Read =() => 
      { 
       if (dsrIndexCounter < testCaseCount) 
       { 
        dsrIndexCounter++; 
        return true; 
       } 
       return false; 
      }, 
      ItemGetString = (val) => 
      { 
       // [] operator 
       return dtStatReq.Rows[dsrIndexCounter - 1][val]; 
      } 
     }; 

를) 다음

내 코드입니다 . 나는 다음과 같은 오류가 주어진

<Add FullName="System.Data.SqlClient.SqlDataRead"/> 

파일 페이크에서 SqlDataReader 개체에 대한 다음 줄을 제거하려고하면 :

"형식 또는 네임 스페이스 이름하여 'ShimSqlDataReader'을 (를) 찾을 수 없습니다 (당신입니다 using 지시문 또는 어셈블리 참조가?)

내가 SqlDataReader 개체 조롱과 페이크를 사용할 필요가있다. 나는 무엇

+0

왜? 이미 사용할 수있는 인터페이스와 추상 기본 클래스가 모두 있습니다. –

+0

"SqlDataReaderSmi"란 무엇입니까? –

+0

@JonathanAllen 질문을 자세히 업데이트하도록 업데이트했습니다. – MStrad

답변

0

? 잘못을하고있는 중이 야 나는 내 문제를 알아 냈어. 여기에 오류를 제거하는 것이다.

1. 샘플 모의 함수를 추가하여 SqlDataReader의 Shim 클래스를 확인했습니다. 일단 내가 그것을 발견하면 나는 Fake 파일에 이름을 충분히 구체적으로 작성했다는 것을 깨달았다.

2. 마지막 줄 바꿈 코드를 다음 줄과 바꾸면 문제가 해결됩니다.

<Add FullName="System.Data.SqlClient.SqlDataReader!"/>