簡體   English   中英

Moq安裝程序具有接受對象列表的功能,如何定義可以接受的對象ID?

[英]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.IdfakeObject2.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM