[英]Moq Setup with function that accepts a list of objects, how to define object Ids that can be accepted?
我有以下Moq服務。 函數之一接受各種參數,但其中之一是List<MyObject>
,其中MtObject
具有Id
。 我試圖定義Moq應該接受的實際對象,以返回我想要為該對象返回的內容,但是它不起作用-沒有返回任何內容-我想知道是否是因為提供的對象不是我們調用Moq服務時使用的確切對象-所以我將嘗試在安裝程序中指定MyObject.Id
,但我不知道該怎么做。
這是我的原始作品:
myService.Setup(s => s.GetSomeStuff(
It.IsAny<Reference>(),
new List<MyObject>() { fakeMyObject1, fakeMyObject2 },
anotherThing,
number))
.Returns(MyResponse).Verifiable();
上面的返回null
,如果我使用It.IsAny<List<MyObject>>()
然后我得到一個響應,但是我需要基於傳入的MyOject
有一個不同的響應。
為了指定fakeObject1.Id
和fakeObject2.Id
而不是對象,我將用哪一行替換?
new List<MyObject>() { fakeMyObject1, fakeMyObject2 }
還是您認為原始解決方案應該有效? 還是有另一種選擇?
我想知道是否是因為提供的對象與調用Moq服務時使用的對象不完全相同
那是對的。 由於參數實例不匹配,因此模擬無法按預期運行。
將It.Is<T>()
參數匹配器與謂詞一起使用以匹配所需的ID
myService.Setup(_ => _.GetSomeStuff(
It.IsAny<Reference>(),
It.Is<List<MyObject>>(x =>
x.Any(y => y.Id == fakeObject1.Id || y.Id == fakeObject2.Id) //<-- or something else
),
anotherThing,
number))
.Returns(MyResponse)
.Verifiable();
參考起訂量快速入門:匹配參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.