亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當輸出參數返回不同的派生類型時,NSubstitute 拋出

當輸出參數返回不同的派生類型時,NSubstitute 拋出

C#
瀟湘沐 2023-05-13 16:13:31
我有一個鍵值存儲keyValueDatabase。要請求數據,IKeyValueResult keyValueDatabase.GetKeyValue(string id, out IKeyValue value)必須使用請求值的 id 調用。該值作為從 IKeyValue 派生的對象通過 out 參數返回。界面如下所示:public interface IKeyValue{  string ID { get; set; }}//analogue IKeyValueString...public interface IKeyValueDouble : IKeyValue{  double Value { get; set; }}現在我使用下面的代碼配置這個鍵值存儲的存根。ReturnedKeyValuesIKeyValue是我創建的不同類型的存根的集合。IKeyValue keyValue;keyValueDatabase.GetKeyValue(Arg.Any<string>(),    out Arg.Any<IKeyValue>()).ReturnsForAnyArgs(info =>{    if (ReturnedKeyValues.Select(keyVal => keyVal.ID).Contains(info[0]))    {        info[1] = ReturnedKeyValues.First(keyVal => keyVal.ID == (string)info[0]);        return okResult;    }    else    {        info[1] = null;        return unavailableResult;    }});當第一次使用keyValueDatabase.GetKeyValueID 為“a”的存根時,它會返回 IKeyValueDouble 類型的輸出值。現在,當第二次使用 id 'b' 調用此方法時,應返回 IKeyValueString 類型的值。但是,在這種情況下會拋出 ArgumentSetWithIncompatibleValueException:無法將類型 ObjectProxy_1 的值設置為參數 1 (IKeyValue&),因為類型不兼容。使用Returnsinstead of 的ReturnsForAnyArgs行為方式相同。我正在使用 NSubstitute 4.2.0 和 .Net-Framework 4.7。
查看完整描述

1 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

NSubstitute 3.1.0 中的錯誤。已修復 4.2.1 版



查看完整回答
反對 回復 2023-05-13
  • 1 回答
  • 0 關注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號