Mocking Delegate.Invoke () usando Moq lança exceção InvalidCast no LINQ

Digamos que eu tenhoIService interface:

public interface IService
{
    string Name { get; set; }
}

E um delegadoFunc<IService> que retorna essa interface.

No meu teste de unidade, quero zombar do delegado.Invoke() método usando Moq assim:

[TestMethod]
public void UnitTest()
{
    var mockService = new Mock<IService>();

    var mockDelegate = new Mock<Func<IService>>();
    mockDelegate.Setup(x => x.Invoke()).Returns(mockService.Object);

    // The rest of the test
}

InfelizmentemockDelegate.Setup(...) jogaSystem.InvalidCastException:

O método de teste UnitTest lançou a exceção:

System.InvalidCastException: Não foi possível converter o objeto do tipo 'System.Linq.Expressions.InstanceMethodCallExpressionN' para o tipo 'System.Linq.Expressions.InvocationExpression'.

em Moq.ExpressionExtensions.GetCallInfo (expressão LambdaExpression, simulação simulada)

em Moq.Mock. <> c_DisplayClass1c`2.b_1b ()

em Moq.PexProtector.Invoke (função Func`1)

em Moq.Mock.Setup (Mock1 mock, Expression1 expressão, condição Condição)

em Moq.Mock1.Setup(Expression1 expressão)

em UnitTest () em UnitTests.cs: linha 38

A linha 38 émockDelegate.Setup(x => x.Invoke()).Returns(mockService.Object);

Estou esquecendo de algo? Ou zombar da invocação de delegado geralmente não é uma boa ideia?

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion