Moq-参数不匹配

Xer*_*xes 2 moq

我试图弄清楚为什么我在嘲笑我非常简单的界面时会遇到以下异常。

System.Reflection.TargetParameterCountException:参数计数不匹配。

    var zoneLocator = new Mock<IZoneLocator<ZoneInfo>>();
    zoneLocator
        .Setup(zl => zl.GetZoneInfo(
            It.IsAny<double>(), It.IsAny<double>()))
        .Returns((ZoneInfo zoneInfo) =>
            Task.FromResult(zoneInfo));

    var z = zoneLocator.Object.GetZoneInfo(1, 1);
Run Code Online (Sandbox Code Playgroud)

接口:

public interface IZoneLocator<T>
{
    Task<T> GetZoneInfo(double latitude, double longitude);
}
Run Code Online (Sandbox Code Playgroud)

Pat*_*irk 5

的重载Returns期望a Func期望一个函数具有与模拟方法的输入相同的输入。这使您可以根据方法的输入来更改返回值。

因此,要解决此问题,请将您的设置更改为此:

zoneLocator
    .Setup(zl => zl.GetZoneInfo(It.IsAny<double>(), It.IsAny<double>()))
    .Returns((double latitude, double longitude) =>
        Task.FromResult(/* TODO: create a timezone somehow*/));
Run Code Online (Sandbox Code Playgroud)