1 回答

TA貢獻(xiàn)1790條經(jīng)驗 獲得超9個贊
您所看到的與Closures 在for和foreachloops中的行為不同有關(guān)。
和:
for (int i=0; i<ObjectAList.Count; i++)
{
_translator.Setup(x => x.TranslateToObjectB(ObjectAList[i])).Returns(ObjectBList[i]);
}
您正在關(guān)閉(捕獲)for迭代變量。行為將取決于模擬框架何時評估 lambda 表達(dá)式。
嘗試:
for (int i=0; i<ObjectAList.Count; i++)
{
var j = i;
_translator.Setup(x => x.TranslateToObjectB(ObjectAList[j])).Returns(ObjectBList[j]);
}
反而。它會起作用嗎?
您也可以只進(jìn)行一項設(shè)置,類似于以下內(nèi)容:
_translator.Setup(x => x.TranslateToObjectB(It.IsAny<ObjAType>()))
.Returns((ObjAType a) => ObjectBList[ObjectAList.IndexOf(a)]);
- 1 回答
- 0 關(guān)注
- 142 瀏覽
添加回答
舉報