11
私はSqlDataReaderのDataReaderを嘲笑し、Rhino.Mocks.Exceptions.ExpectationViolationExceptionを取得する:IDisposable.Dispose();期待#0、実際の#1
SqlDataReader reader = mocks.CreateMock<SqlDataReader>();
Expect.Call(reader.Read()).Return(true).Repeat.Times(1);
Expect.Call(reader.Read()).Return(false);
Expect.Call(reader.HasRows).Return(true);
Expect.Call(reader.Dispose);
Expect.Call(reader["City"]).Return("Boise");
Expect.Call(reader["State"]).Return("State");
Expect.Call(reader["LAT"]).Return(100);
Expect.Call(reader["LON"]).Return(-100);
mocks.ReplayAll();
を模擬しようとしているが、私はRhino.Mocks.Exceptions.ExpectationViolationException得続ける:IDisposable.Disposeを();私の方法で期待される#0、実際の#1エラー
using (reader)
{
if (reader.HasRows)
{
while (reader.Read())
{
CityState myCity = new CityState
{
City = reader["City"].ToString(),
State = reader["State"].ToString(),
Lat = Convert.ToInt32(reader["LAT"]),
Lon = Convert.ToInt32(reader["LON"])
};
myCities.Add(myCity);
}
}
}
私には何かが欠けていますか?
私はこの答えが受け入れられたことから、それが解決していなければならないことを前提としてい問題。しかし、問題は残っています。なぜそれは機能しましたか?私はIDisposable(私はSystem.IO.Streamをモックしようとしている)と同じ問題を抱えています。なぜ私のスタブされたDispose()が呼び出されていないのか分かりません。 –
これは、 'SqlDataReader'を' IDataReader'に置き換え、この 'IDataReader'を嘲笑したために動作します。あなたの場合は、インターフェイスの代わりに抽象クラスで作業しているようです。この場合、モックされたオブジェクトを 'MockRepository.GeneratePartialMock()'で作成し、 'streamMock.Expect(x => x.Dispose())を使って期待値を定義する必要があります。 ; '。 –
CityStateの実装を追加した後、この例はあなたのマシンで実行されますか?そうでない場合は、実行するように完全なコードを提供できますか? var reader = new Mock()とreader.Setup(...)を使った後でさえ、Moq 4.0.10827で私にとってはそうではありません。 –
Lernkurve