2016-06-21 53 views
0

以下是錯誤:「無法爲System.Data.SqlClient.SqlDataReaderSmi生成墊片:type現在對導出或程序集可見(System.Data.4.0.0.0.Fakes 。)Cannote爲System.Data.SqlClient.SqlDataReaderSmi生成墊片

這裏是我的代碼:

<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]; 
      } 
     }; 

總的來說,我需要在我的單元測試使用假貨。當我嘗試刪除關於假貨SqlDataReader中以下行文件

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

我提示以下錯誤:

「的類型或命名空間名稱ShimSqlDataReader「找不到(你缺少using指令或程序集引用?)

我嘲笑SqlDataReader中,需要使用假貨。我在做什麼錯?

+0

爲什麼?您已經擁有可以使用的接口和抽象基類。 –

+0

什麼是「SqlDataReaderSmi」? –

+0

@JonathanAllen我已經更新了這個問題,以便更詳細地瞭解。 – MStrad

回答

0

我想通了,我的問題。這裏是去除錯誤。

1.我添加了一個示例模擬函數來查看SqlDataReader的Shim類。一旦我發現它,我意識到我已經在Fakes文件中寫下了足夠具體的名字。

2.用下面的代碼行代替最終的add可以解決問題。

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