I'm trying to mock a Visual Studio CommandBars instance. CommandBars implements the non-generic IEnumerable interface. To be able to iterate over the mock, I set up GetEnumerable(). Strangely, this only works if I access the mock.Object as an instance of CommandBars. If I cast is to IEnumerable (as it happens implicitly when using Linq methods) GetEnumerable() suddenly returns null. Can someone explain this behavior?
var mockCommandBars = new Mock<CommandBars>();
IEnumerable bars = new List<CommandBar>();
mockCommandBars.Setup(cb => cb.GetEnumerator()).Returns(bars.GetEnumerator);
var cbs = mockCommandBars.Object;
var cbs1 = cbs.GetEnumerator(); // returns instance
var ecbs = (IEnumerable) cbs;
var cbs2 = ecbs.GetEnumerator(); // returns null!
Edit: I'm using Moq 4.2.1402.2112