簡體   English   中英

Moqed方法返回null而不是字符串

[英]Moqed method returning null instead of string

我正在使用Moq進行一些C#測試。 由於某種原因,我得到的是空值而不是字符串。 我正在嘗試測試

public void Foo(IData data){
    _value = data.GetValue<T>(someString);
}

interface IData
{
    T GetValue<T>(string someString);
}

在我的測試代碼中

Mock<IData> dataMock = new Mock<IData>();
dataMock.Setup(x => x.GetValue<string>(It.IsAny<string>())).Returns("blah");
Foo(dataMock.Object);

但是當我逐步執行時, _value被分配為null。 它不應該被指定為"blah"嗎?

您對GetValue的調用中的通用T參數很可能不是string ,因此安裝條件不匹配。 默認情況下,Moq將從尚未顯式設置的方法調用中返回默認值(在這種情況下為null ),除非您將其稱為“嚴格”。

// tell Moq to throw an exception if someone calls a method that you haven't `Setup`
Mock<IData> dataMock = new Mock<IData>(MockBehavior.Strict); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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