Mocking Delegate.Invoke () przy użyciu Moq zgłasza wyjątek InvalidCast w LINQ

Powiedzmy, że mamIService berło:

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

I delegatFunc<IService> który zwraca ten interfejs.

W moim teście jednostkowym chcę drwić z delegataInvoke() metoda używająca Moq w ten sposób:

[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
}

NiestetymockDelegate.Setup(...) rzucaSystem.InvalidCastException:

Metoda testowa UnitTest zgłosiła wyjątek:

System.InvalidCastException: Nie można rzutować obiektu typu „System.Linq.Expressions.InstanceMethodCallExpressionN” na „System.Linq.Expressions.InvocationExpression”.

at Moq.ExpressionExtensions.GetCallInfo (wyrażenie LambdaExpression, Mock mock)

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

w Moq.PexProtector.Invoke (funkcja Func`1)

at Moq.Mock.Setup (Mock1 mock, Expression1 wyrażenie, warunek warunku)

w Moq.Mock1.Setup(Expression1 wyrażenie)

w UnitTest () w UnitTests.cs: linia 38

Linia 38 tomockDelegate.Setup(x => x.Invoke()).Returns(mockService.Object);

Czy czegoś mi brakuje? Albo kpiny z wezwania delegata nie są na ogół dobrym pomysłem?

Dziękuję Ci.

questionAnswers(2)

yourAnswerToTheQuestion