簡體   English   中英

NSubstitute無法設置返回值(CouldNotSetReturnException)

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

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