Учитывая 2 интерфейса, имеющих одну общую функцию
public interface I1 { void Foo(string p);};
public interface I2 { void Foo(string p);};
Мы создаем макет обоих интерфейсов, используя moq
Mock<I1> menuServiceMock = new Mock<I1>();
menuServiceMock.As<I2>();
Проблема в том, что при вызове Foo на I2
(menuServiceMock.Object as I2).Foo("foo"); // in real code, we have a handle on I2
Вы не можете проверить это с помощью:
menuServiceMock.Verify(x => x.Foo("foo"), Times.Once());
... потому что считаются только вызовы I1 :: Foo.
Как мы можем преодолеть это (кроме изменения I1 и I2 в фиктивной конструкции)?