mockオブジェクトを設定して、入力変数の1つを呼び出し元に返すようにしています。MoqはIEnumerableをエコーバックして空に戻りますか?
_resultThrottler = new Mock<IResultThrottler>();
_resultThrottler
.Setup(x => x.Throttle(It.IsAny<IEnumerable<ProductResult>>(), It.IsAny<Guid>()))
.Returns((IEnumerable<ProductResult> input, Guid resultSetId) => input);
実際には出力が常に空の場合は常に空です。
var throttledResults = _resultThrottler.Throttle(results, resultSetId).ToList();
何が間違っていますか?
EDIT:要求されたとして:
public interface IResultThrottler
{
IEnumerable<TType> Throttle<TType>(IEnumerable<TType> collectionToThrottle,
Guid sessionId) where TType : ProductResult;
}
変数results
のための完全な初期化シーケンスはかなり複雑ですが、テストでは長さ5の種類System.Collections.Generic<IEnumerable<(type that inherits from ProductResult)>>
の対象としてで行く、と出てきています長さが0の模擬オブジェクトの
完全性のために、 'results'の宣言/初期化を追加できますか? –
そして 'IResultThrottler.Throttle()'の定義です。 –