[英]NSubstitute cannot setup return value (CouldNotSetReturnException)
我有一個接口(稱為IRepository
),上面有一個這樣的方法:
IEnumerable<TEntity> ExecuteStoredProcedure<TEntity>(string functionName,
params Tuple<string, object>[] parameters);
我試圖設置通過我的單元測試調用該方法時將返回的內容。 像這樣:
dataAccess = Substitute.For<IRepository>();
dataAccess.ExecuteStoredProcedure<MyCustomReturnType>(null, null)
.ReturnsForAnyArgs(MyCustomReturnList);
運行測試時,出現以下異常:
NSubstitute.Exceptions.CouldNotSetReturnException:找不到從其返回的調用。
該消息繼續提醒您嘗試對實際的類執行此操作,但這不適用於我。
我試圖將我的null
參數更改為更真實的東西:
ExecuteStoredProcedure<MyCustomReturnType>("", new Tuple<string, object>[]{null})
但這沒有幫助...
有什么想法我用這種替代品做錯了嗎?
(我的猜測是它與params
關鍵字有關。)
因此,在這里簡化堆棧溢出可能會給您帶來麻煩。
列表MyCustomReturnList
實際上是靜態類中包含的列表。 由於將列表作為返回值傳遞並不會實際影響類,因此未調用靜態構造函數(用於設置列表)。
以某種方式(不太確定細節),對尚未設置的列表進行“引用”是為了使NSubstitute無法設置返回值(可能是因為它未初始化)。
NSubstitute可以做得更好的唯一事情是一條不同的錯誤消息。 但是錯誤出在我的代碼中,而不是NSubstitute。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.