我有一個鍵值存儲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。
添加回答
舉報
0/150
提交
取消