1

我发现标题为MOQ:返回值的帖子被传递到一个方法中,这非常有帮助,因为我可以获取传入的值之一作为返回值。

我面临的问题是我需要将值(字符串)转换为 IEnumerable 作为枚举中唯一的一项,并且我在这样做的语法上遇到了麻烦。

这是我到目前为止所拥有的:

var aggregator = new Mock<IUrlAggregator>();
        aggregator
            .Setup(x => x.ProcessUrl(It.IsAny<IUrlFileLineInfo>()))
            .Returns((IUrlFileLineInfo x) => x.Url); <-- Need to return IEnumerable<string> here, not string

ProcessUrl 签名如下所示:

IEnumerable<string> ProcessUrl(IUrlFileLineInfo urlInfo);

和 IUrlFileLineInfo 接口:

public interface IUrlFileLineInfo
{
    string Url { get; set; }
    string Mode { get; set; }
}

那么如何在 Lamba 表达式的上下文中将字符串值转换为 IEnumerable(通过 .Returns() 方法)?

更新

这就是我最终的结果。谢谢您的帮助。希望这将帮助其他不熟悉 lambdas 的人。

var aggregator = new Mock<IUrlAggregator>();
        aggregator
            .Setup(x => x.ProcessUrl(It.IsAny<IUrlFileLineInfo>()))
            .Returns((IUrlFileLineInfo x) => new List<string>() { x.Url });
4

1 回答 1

1

返回一个包含一项的数组怎么样x.Url

var aggregator = new Mock<IUrlAggregator>();
        aggregator
            .Setup(x => x.ProcessUrl(It.IsAny<IUrlFileLineInfo>()))
            .Returns((IUrlFileLineInfo x) => new [] { x.Url });
于 2012-10-09T20:04:37.303 回答