У меня проблемы с подделкой набора интерфейсов:
interface IFoo
{
object Blah { get; }
}
interface IBar : IFoo
{
new string Blah { get; }
}
Я пробовал насмехаться как:
var mock = new Mock<IFoo>();
mock.SetupGet(m => m.Blah).Returns("Blah");
Теперь это работает:
Assert.That(mock.Object.Blah, Is.EqualTo("Blah"));
Проблема заключается в том, что когда я добавляю следующее, чтобы также иметь значение для интерфейса IBar
, значение IFoo.Blah
равно нулю.
var bar = mock.As<IBar>();
bar.SetupGet(m => m.Blah).Returns("Blah");
Теперь это работает:
Assert.That(((IBar)mock.Object).Blah, Is.EqualTo("Blah"));
Но старый выходит из строя:
Assert.That(mock.Object.Blah, Is.EqualTo("Blah"));
// mock.Object.Blah is null now
Есть ли способ заставить обоих работать?