我发现标题为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 });