Mutli Mocks and verifying behavior
I have the following piece of code:
protected override void DoClose() { IDisposable dispoable = enumerator as IDisposable; if (dispoable != null) dispoable.Dispose(); dispoable = enumerable as IDisposable; if(dispoable != null) dispoable.Dispose(); }
How do I verify that it correctly disposes both enumerator and enumerable when the method is called?
Here is the test that I wrote, it is using Rhino Mocks' Multi Mocks feature to generate a proxy that has more than a single implementation.
[Test] public void WillDisposeInternalEnumeratorAndEnumerableWhenDisposed() { MockRepository mocks = new MockRepository(); IEnumerable<Row> enumerable = mocks.DynamicMultiMock<IEnumerable<Row>>(typeof(IDisposable)); IEnumerator<Row> enumerator = mocks.DynamicMock<IEnumerator<Row>>(); using(mocks.Record()) { SetupResult.For(enumerable.GetEnumerator()).Return(enumerator); enumerator.Dispose(); ((IDisposable)enumerable).Dispose(); } using (mocks.Playback()) { DictionaryEnumeratorDataReader reader = new DictionaryEnumeratorDataReader(new Dictionary<string, Type>(), enumerable); reader.Dispose(); } }
Simple, and to the point.

Comments
Comment preview