[英]NSubstitute to return a Null for an object
我是單元測試的新手,在我看來,讓NSubstitute能夠為方法返回null應該很容易,但是我無法使其正常工作。
我已經嘗試過這個應該返回Campaign方法的Get方法
_campaigns = Substitute.For<IOptions<Campaigns>>();
_campaigns.Get(Arg.Any<string>()).Returns(null);
在生產中,我使用FirstOrDefault()方法返回廣告系列對象,如果不存在則返回null。 所以在我的單元測試中,我想測試這種情況,但是我不能用NSubstitute偽造它,因為在編譯時出現以下錯誤:
錯誤CS0121:以下方法或屬性之間的調用不明確:“ SubstituteExtensions.Returns(T,T,params T [])”和“ SubstituteExtensions.Returns(T,Func,params Func [])”
我這樣做是為了避免錯誤:
_campaigns.Get(Arg.Any<string>()).Returns((Campaign)null);
但是然后我在那條線上得到一個執行錯誤:
System.NullReferenceException:對象引用未設置為對象的實例。
如今NSubsitute具有調用ReturnsNull
或expression的方法.Returns(l => null)
https://github.com/nsubstitute/NSubstitute/pull/181
我認為這個話題應該由主持人關閉
我有一個類似的問題,發現下面的解決方案
_campaigns = Substitute.For<IOptions<Campaigns>>();
_campaigns.Get(Arg.Any<string>()).ReturnsForAnyArgs(i => null);
另外,您可以使用.Returns(i => null) or .ReturnsNull()
來為_campaigns.Get()
方法返回空值。
我發現我使用的是實際類“ Campaigns”而不是接口的問題,所以NSubstitute使用的是實際類:(
NSubstitute設計用於接口。
因此,在這種情況下,我沒有使用NSubstitute,而是為類創建了一個假對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.