我有一個鍵值存儲keyValueDatabase。要請求數(shù)據(jù),IKeyValueResult keyValueDatabase.GetKeyValue(string id, out IKeyValue value)必須使用請求值的 id 調(diào)用。該值作為從 IKeyValue 派生的對象通過 out 參數(shù)返回。界面如下所示:public interface IKeyValue{ string ID { get; set; }}//analogue IKeyValueString...public interface IKeyValueDouble : IKeyValue{ double Value { get; set; }}現(xiàn)在我使用下面的代碼配置這個鍵值存儲的存根。ReturnedKeyValuesIKeyValue是我創(chuàng)建的不同類型的存根的集合。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; }});當(dāng)?shù)谝淮问褂胟eyValueDatabase.GetKeyValueID 為“a”的存根時,它會返回 IKeyValueDouble 類型的輸出值?,F(xiàn)在,當(dāng)?shù)诙问褂?id 'b' 調(diào)用此方法時,應(yīng)返回 IKeyValueString 類型的值。但是,在這種情況下會拋出 ArgumentSetWithIncompatibleValueException:無法將類型 ObjectProxy_1 的值設(shè)置為參數(shù) 1 (IKeyValue&),因為類型不兼容。使用Returnsinstead of 的ReturnsForAnyArgs行為方式相同。我正在使用 NSubstitute 4.2.0 和 .Net-Framework 4.7。
- 1 回答
- 0 關(guān)注
- 161 瀏覽
添加回答
舉報
0/150
提交
取消