Hier ist der Fehler: "Kann Shim für System.Data.SqlClient.SqlDataReaderSmi nicht generieren: Typ ist jetzt für exportierte oder Assembly sichtbar (System.Data.4.0.0.0.Fakes .)Kann Shim für System.Data.SqlClient.SqlDataReaderSmi generieren
Hier ist mein Code:
<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>
in meiner Unit-Tests ich die SqlDataReader wie so bin spöttisch:
var statReqReader = new ShimSqlDataReader()
{
Read =() =>
{
if (dsrIndexCounter < testCaseCount)
{
dsrIndexCounter++;
return true;
}
return false;
},
ItemGetString = (val) =>
{
// [] operator
return dtStatReq.Rows[dsrIndexCounter - 1][val];
}
};
im allgemeinen muss ich Fakes in meiner Unit-Tests verwenden, . Wenn ich versuche, die folgende Zeile über die SqlDataReader in der Fakes zu entfernen Datei
<Add FullName="System.Data.SqlClient.SqlDataRead"/>
ich die folgende Fehlermeldung gegeben habe:
„Der Typ oder Namespace-Name‚ShimSqlDataReader‘konnte nicht gefunden werden (sind eine using-Direktive oder ein Assemblyverweis fehlt?)
ich die SqlDataReader verspotten und müssen Fakes verwenden. Was mache ich falsch?
Warum? Sie haben bereits eine Schnittstelle und eine abstrakte Basisklasse, die Sie verwenden können. –
Was ist ein "SqlDataReaderSmi"? –
@ JonathanAllen Ich habe die Frage aktualisiert, um ins Detail zu gehen. – MStrad