Jestem nowy, aby moq i ustawienie makiety, więc mogłem zrobić przy niewielkiej pomocy. W jaki sposób makiety SqlDataReader za pomocą Moq?Jak wyśmiać SqlDataReader za pomocą Moq - Aktualizacja
Aktualizacja
Po dalszych badań jest to, co mam tak daleko:
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;
}
występujący problem jest wtedy, gdy robię reader.Read w sposobie mojego GetTestData() jej zawsze pusty. Muszę wiedzieć, jak coś zrobić jak
reader.Stub(x => x.Read()).Repeat.Once().Return(true)
jak na przykład: makiety nosorożca Mocking a DataReader and getting a Rhino.Mocks.Exceptions.ExpectationViolationException: IDisposable.Dispose(); Expected #0, Actual #1
Nie mam doświadczenia w kpieniu z SqlDataReader, ale jeśli możesz, powinieneś kpić z interfejsu. Sprawdziłem to dla ciebie i może ten artykuł mógłby ci pomóc:] http://stackoverflow.com/questions/1792984/mocking-a-datareader-and-getting-a-rhino-mocks-exceptions-expectationviolationexc Używa Rhinomocks, ale pomysł jest taki sam. Sugerowane tam, powinieneś wykpić IDataReader. Kiedy wyśmiałeś się z tego, nie powinieneś mieć problemów z wykonywaniem .Setups() na próbach ^^ Jeśli już próbowałeś kpić z interfejsu, może mógłbyś pokazać nam, gdzie utknąłeś, umieszczając przykładowy kod:] – Bas