无法为 System.Data.SqlClient.SqlDataReaderSmi 生成垫片
Cannote generate shim for System.Data.SqlClient.SqlDataReaderSmi
这是错误:“无法为 System.Data.SqlClient.SqlDataReaderSmi 生成垫片:类型现在对导出或程序集可见 (System.Data.4.0.0.0.Fakes)。
这是我的代码:
<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];
}
};
一般来说,我需要在我的单元测试中使用 Fakes。当我尝试删除 Fakes 文件中有关 SqlDataReader 的以下行时
<Add FullName="System.Data.SqlClient.SqlDataRead"/>
我收到以下错误:
“找不到类型或命名空间名称 'ShimSqlDataReader'(是否缺少 using 指令或程序集引用?)
我模拟了 SqlDataReader 并且需要使用 Fakes。我做错了什么?
我想通了我的问题。这是删除错误的内容。
1.I 添加了示例模拟函数以查看 SqlDataReader 的 Shim class。找到它后,我意识到我在 Fakes 文件中写的名字已经足够具体了。
2.Replacing 最后添加以下代码行解决了问题。
<Add FullName="System.Data.SqlClient.SqlDataReader!"/>
这是错误:“无法为 System.Data.SqlClient.SqlDataReaderSmi 生成垫片:类型现在对导出或程序集可见 (System.Data.4.0.0.0.Fakes)。
这是我的代码:
<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];
}
};
一般来说,我需要在我的单元测试中使用 Fakes。当我尝试删除 Fakes 文件中有关 SqlDataReader 的以下行时
<Add FullName="System.Data.SqlClient.SqlDataRead"/>
我收到以下错误:
“找不到类型或命名空间名称 'ShimSqlDataReader'(是否缺少 using 指令或程序集引用?)
我模拟了 SqlDataReader 并且需要使用 Fakes。我做错了什么?
我想通了我的问题。这是删除错误的内容。
1.I 添加了示例模拟函数以查看 SqlDataReader 的 Shim class。找到它后,我意识到我在 Fakes 文件中写的名字已经足够具体了。
2.Replacing 最后添加以下代码行解决了问题。
<Add FullName="System.Data.SqlClient.SqlDataReader!"/>