[英]c#:Why when I try to use coalesce operator in a mock it doesn't work
為什么當我嘗試使用這樣的模擬時:
public void Test(string param=null){
MyMock.Setup(x=>x.foo(param ?? It.IsAny<string>));
}
這顯然工作正常
public void Test(string param=null){
if(param==null)
MyMock.Setup(x=>x.foo(It.IsAny<string>));
else
MyMock.Setup(x=>x.foo(param));
}
但這是為什么呢? “param?? It.IsAny”返回 param 或 It.IsAny 我在這里缺少什么?
在 Moq 中設置 Mock 時,您實際上傳遞的不是 function 參數的值(例如 tpye T
),而是一個Expression<T>
,然后由Moq
分析。
因此,當您傳遞值時, Moq
將對其進行分析並為使用該值的方法調用設置期望。
當您通過It.IsAny<T>
時, Moq
將再次對其進行分析並設置預期,而無需任何 arguments。
但是當你傳遞你的param?? It.IsAny<string>
param?? It.IsAny<string>
Moq
根本不知道如何分析它。
MyMock.Setup(x=>x.foo(param==null ? It.IsAny<string>:param));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.