MOQ - como zombar de uma interface que precisa ser convertida para outra interface?

o que eu quero fazer é construir um moq para I1 - o que é bom ... no entanto, no decorrer do método que estou testando que usa esse mock, preciso convertê-lo para I2 para acessar algumas propriedades que não estão em I1

Interface I1 
{ int AProperty{get;set;}}

Interface I2
{int AnotherProperty{get;set;}}

Então eu tenho alguns objetos

Class O1 : I1 {}

e

Class O2 : O1 , I2 {}

o problema é que, quando tenho uma instância de um objeto de implementação I2, posso convertê-lo para I1 para acessar os métodos implementados por essa interface. No código, isso não é um problema e tudo funciona como esperado.

O único problema surge ao escrever um teste de unidade nessa classe.

As interfaces também expõem um método chamado GetNewInstance, que retorna uma instância inicializada do objeto de implementação convertido na interface IGetNewInstance ... Normalmente, eu posso zombar dessa multa e fazer com que ela retorne (e continuo trabalhando com o objeto zombeteiro).

no entanto, quando você tenta converter esse objeto retornado do tipo I2 em I1, resulta em uma referência nula - isso faz sentido, pois o objeto falso que implementa I2 não herda de nada que herda I1.

a questão é como posso forçar o objeto simulado a herdar do I1 e do I2 ao mesmo tempo?

questionAnswers(1)

yourAnswerToTheQuestion