MOQ: Returning value that was passed into a methodというタイトルの投稿を見つけました。これは、渡された値の 1 つを取得して戻り値として提供できるという点で非常に役立ちました。
私が直面している問題は、値 (文字列) を列挙内の唯一の項目として 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; }
}
では、(.Returns() メソッドを使用して) ラムバ式のコンテキスト内で文字列値を IEnumerable に変換するにはどうすればよいでしょうか?
アップデート
これが私が最終的に得たものです。助けてくれてありがとう。うまくいけば、これはラムダを初めて使用する他の人に役立ちます。
var aggregator = new Mock<IUrlAggregator>();
aggregator
.Setup(x => x.ProcessUrl(It.IsAny<IUrlFileLineInfo>()))
.Returns((IUrlFileLineInfo x) => new List<string>() { x.Url });