Sono nuovo a moq e sto configurando i mock quindi potrei fare un piccolo aiuto. Come faccio a mockare un SqlDataReader usando Moq?Come prendere in giro un SqlDataReader usando Moq - Aggiornamento
Aggiornamento
Dopo ulteriori test questo è quello che ho finora:
private IDataReader MockIDataReader()
{
var moq = new Mock<IDataReader>();
moq.Setup(x => x.Read()).Returns(true);
moq.Setup(x => x.Read()).Returns(false);
moq.SetupGet<object>(x => x["Char"]).Returns('C');
return moq.Object;
}
private class TestData
{
public char ValidChar { get; set; }
}
private TestData GetTestData()
{
var testData = new TestData();
using (var reader = MockIDataReader())
{
while (reader.Read())
{
testData = new TestData
{
ValidChar = reader.GetChar("Char").Value
};
}
}
return testData;
}
Il problema si è quando faccio reader.Read nel mio metodo GetTestData() la sua sempre vuoto. Ho bisogno di sapere come fare qualcosa di simile
reader.Stub(x => x.Read()).Repeat.Once().Return(true)
come per esempio il rinoceronte finto: Mocking a DataReader and getting a Rhino.Mocks.Exceptions.ExpectationViolationException: IDisposable.Dispose(); Expected #0, Actual #1
Non ho esperienza di simulazione di SqlDataReader ma, se è possibile, è necessario prendere in giro l'interfaccia. Ho cercato per te e forse questo articolo potrebbe aiutarti: http://stackoverflow.com/questions/1792984/mocking-a-datareader-and-getting-a-rhino-mocks-exceptions-expectationviolationexc Usa Rhinomocks ma l'idea è la stessa. Suggerito lì, dovresti simulare IDataReader. Quando lo prendi in giro, non dovresti avere problemi a fare .Setups() sul finto ^^ Se hai già provato a usare un'interfaccia, forse potresti mostrarci dove ti blocchi mettendo un codice di esempio:] – Bas