Функция определена как свойство, поэтому вы должны использовать SetupSet в Moq
public interface IPersona
{
string nome { get; set; }
string cognome { get; set; }
Func<Owned<ISomeInterface>> somemethod { get; set; }
}
.В вашем тесте:
Вы создаете макет для Func:
Func<Owned<ISomeInterface>> somemethodMock = () => new Mock<Owned<ISomeInterface>>().Object;
Затем вы устанавливаете макет для класса, содержащего Func как свойство, и вы устанавливаете ожидание в методе Set:
var obj = new Mock<IMyInterface>();
obj.SetupSet(x => x.somemethod = somemethodMock).Verifiable();
Вы создаете объект контейнера для макета:
//We pass the mocked object to the constructor of the container class
var container = new Container(obj.Object);
container.AnotherMethod(somemethodMock);
obj.VerifyAll();
Вот определение другого метода класса Container, если получить func в качестве входного параметра и установитьэто к свойству содержавшегося объекта
enter public class Container
{
private IPersona _persona;
public Container(IPersona persona)
{
_persona = persona;
}
public void AnotherMethod(Func<MyClass<IMyInterface>> myFunc)
{
_persona.somemethod = myFunc;
}
}