2016-06-21 55 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!"/>