1
我發現標題爲MOQ: Returning value that was passed into a method的帖子非常有幫助,因爲我可以獲取傳入的值之一以提供返回值。Moq:返回值作爲IEnumerable的值傳入方法<T>
我面臨的問題是我需要將值(一個字符串)轉換爲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()met)將字符串值賦值給IEnumerable HOD)?
更新
這是我結束了。謝謝您的幫助。希望這會幫助那些對lambda不熟悉的人。
var aggregator = new Mock<IUrlAggregator>();
aggregator
.Setup(x => x.ProcessUrl(It.IsAny<IUrlFileLineInfo>()))
.Returns((IUrlFileLineInfo x) => new List<string>() { x.Url });
啊,你打我吧。我只是嘗試了類似的解決方案,它的工作。直到我發佈這個聲明在=>之後的數組之後,它纔開始出現。 – NightOwl888