我发现标题为MOQ: Returning value that was passed into a method的帖子非常有用,因为我可以获取其中一个传入的值作为返回值。
我面临的问题是我需要将值(字符串)转换为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表达式的上下文中通过.Returns()方法将字符串值转换为IEnumerable?
更新
这就是我最终的结果。谢谢您的帮助。希望这将有助于其他不熟悉lambdas的人。
var aggregator = new Mock<IUrlAggregator>();
aggregator
.Setup(x => x.ProcessUrl(It.IsAny<IUrlFileLineInfo>()))
.Returns((IUrlFileLineInfo x) => new List<string>() { x.Url });
答案 0 :(得分:1)
如何使用一个项x.Url
返回数组?
var aggregator = new Mock<IUrlAggregator>();
aggregator
.Setup(x => x.ProcessUrl(It.IsAny<IUrlFileLineInfo>()))
.Returns((IUrlFileLineInfo x) => new [] { x.Url });