Soy nuevo en moq y en la configuración de simulacros, así que podría hacerlo con un poco de ayuda. ¿Cómo simulo un SqlDataReader usando Moq?Cómo simular un SqlDataReader usando Moq - Update
actualización
Después de las pruebas más esto es lo que tengo hasta ahora:
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;
}
El problema que es cuando no reader.Read en mi método GetTestData() es siempre vacía. Necesito saber cómo hacer algo como
reader.Stub(x => x.Read()).Repeat.Once().Return(true)
como por ejemplo el rinoceronte simulacro: Mocking a DataReader and getting a Rhino.Mocks.Exceptions.ExpectationViolationException: IDisposable.Dispose(); Expected #0, Actual #1
No tengo experiencia en burlarse del SqlDataReader pero, si puede, debe burlarse de la interfaz. Lo he buscado y tal vez este artículo podría ayudarte ya:] http://stackoverflow.com/questions/1792984/mocking-a-datareader-and-getting-a-rhino-mocks-exceptions-expectationviolationexc Utiliza Rhinomocks pero la idea es la misma. Sugerido allí, debe simular IDataReader. Cuando te burles de eso, no deberías tener problemas para hacer .Setups() en el simulacro ^^ Si ya has intentado burlarse de una interfaz, tal vez podrías mostrarnos dónde te quedas atascado publicando algún código de ejemplo:] – Bas